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问题
plt.savefig不会覆盖现有文件
2 回答
plt.savefig不保存图像
10 回答
plt.savefig在jupyter笔记本中不起作用
4 回答
plt.savefig在从另一个fi调用时停止工作
4 回答
plt.savefig在调用plt.show之前保存空数字
7 回答
plt.save不创建png文件
7 回答
plt.scatter overlay分类数据帧列
6 回答
Plt.Scatter:如何添加title、xlabel和ylab
3 回答
plt.scatter()绘图与Matplotlib中的plt.plot()绘图类似
1 回答
plt.scatter错误'NoneType'对象在成功运行后没有属性'sqrt'
9 回答
plt.set_title()中的标题字符串有误
10 回答
plt.show()
7 回答
plt.show()不在Jupyter笔记本上渲染任何内容
5 回答
plt.show()不打印plt.plot only plt.scatter
5 回答
plt.show()不显示三维散射图像
10 回答
plt.show()不显示任何内容
2 回答
plt.show()不显示数据,而是保留它供下一个图表使用(spyder)
4 回答
plt.show()使终端挂起
2 回答
plt.show()无法使用此代码
9 回答
plt.show()没有打开新的图形风
1 回答