Python中文
首页
教程
问答
标签
搜索
登录
注册
Cython构建导致未定义的symb
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个c++程序,我正试图包装/转换成Cython。它使用的特定库由于某些原因不会导致导入工作模块。顺便说一下,有一个正在工作的c++程序。这是setup.py:</p> <pre><code>ext_modules = [ Extension( name="libnmfpy", sources=["interface/nmf_lib.pyx"], include_dirs = ["../src/", numpy.get_include()], libraries=["nmf","mpi_cxx","mpi","m"], library_dirs=["../build/Linux/bin.release","/usr/local/lib/","/usr/lib"], language="c++",) ] setup( name = 'libnmfpy', cmdclass = {'build_ext': build_ext}, ext_modules = ext_modules, ) </code></pre> <p>我应该提到的是libnmf似乎引起了问题。libnmf的第一次生成将导致此脚本生成此错误:</p> <pre><code>/usr/bin/ld: ../build/Linux/bin.release/libnmf.a(nmf.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC ../build/Linux/bin.release/libnmf.a: could not read symbols: Bad value collect2: error: ld returned 1 exit status </code></pre> <p>当我用-fPIC重建libnmf时,安装程序会生成libnmfpy.so,但是当我在另一个脚本中导入它时,我会得到前面提到的未定义符号:</p> <pre><code>Traceback (most recent call last): File "test.py", line 1, in <module> import libnmfpy ImportError: $path/cython/libnmfpy.so: undefined symbol: _ZN4elem6lapack3SVDEiiPdiS1_ </code></pre> <p>如果有帮助的话,我的搜索建议如下:</p> <pre><code>nm libnmfpy.so | grep _ZN4elem6lapack3SVDEiiPdiS1_ U _ZN4elem6lapack3SVDEiiPdiS1_ nm ../build/Linux/bin.release/libnmf.a | grep _ZN4elem6lapack3SVDEiiPdiS1_ U _ZN4elem6lapack3SVDEiiPdiS1_ </code></pre> <p>这就是我对错误原因的猜测。我看了看libnmf所建立的令人不快的库:</p> <pre><code>nm $another_path/lib/libelemental.a | grep _ZN4elem6lapack3SVDEiiPdiS1_ 0000000000005290 T _ZN4elem6lapack3SVDEiiPdiS1_ </code></pre> <p>我还不太熟悉图书馆和链接器,所以任何帮助将不胜感激。谢谢</p> <p>编辑:一点点的挖掘让我意识到了一些事情。MacOSX和Linux之间有什么区别我应该注意吗?我为之工作的人写这篇文章的最初报告没有像这样的构建错误</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你应该使用<code>nm -C</code>,来解开你的符号。看起来您还混合了静态库和共享库,这通常不是一个好主意。另外,gcc的链接器是一个一次通过的链接器,这意味着库标志的顺序很重要。您要按相反的依赖关系顺序列出库。换句话说,如果a依赖于b,那么b必须出现在链接器标志中的a之前。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
尽管Python中的所有内容都是引用,为什么Python导师在没有指针的列表中绘制字符串和整数?
2 回答
尽管python中的表达式为false,但循环仍在运行
1 回答
尽管python代码正确,但从nifi ExecuteScript处理器获取语法错误
4 回答
尽管Python在Neovim中工作得很好,但插件不能识别Neovim中的Python主机
8 回答
尽管python字典包含了大量的条目,但它并没有增长
1 回答
尽管python说模块存在,为什么我会得到这个消息?
4 回答
尽管setuptools和控制盘是最新的,但无法识别singleversionexternallymanaged
10 回答
尽管stdout和stderr重定向,但未捕获错误消息
2 回答
尽管Tensorboard的事件太大,但Tensorboard的步骤太少了
3 回答
尽管tkinter上的变量已更改,但显示未更改
1 回答
尽管try/except使用Python进行单元测试时出现断言错误
7 回答
尽管URL是sam,但仍会抛出“达到最大重定向”
4 回答
尽管url有效,Pandas仍读取url的\u csv错误
2 回答
尽管while中存在时间延迟,但LINUX线程的CPU利用率为100%(1)
10 回答
尽管x0在范围内,Scipy优化仍会引发ValueError
2 回答
尽管xpath正确,但使用selenium单击链接仍不起作用
7 回答
尽管下载了ffmpeg并设置了路径变量python,但没有后端错误
8 回答
尽管下载了i,但找不到型号“fr”
4 回答
尽管下载了plotnine包,但未获取名为“plotnine”的模块时出错
2 回答
尽管为所有行指定了权重,网格(0)仍不起作用
4 回答