【问题标题】:setup.py ld cannot find library that is present, paths are configuredsetup.py ld 找不到存在的库,路径已配置
【发布时间】:2012-07-24 13:05:41
【问题描述】:

我正在尝试使用本教程将 cython 接口编译到 C 库:Using C libraries with Cython 但是当我使用它时:

python2 setup.py build_ext -i

链接器找不到库(库名是libHorde3D

gcc -pthread -shared -Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu build/temp.linux-x86_64-2.7/horde3d.o -L/usr/lib -llibHorde3D -lpython2.7 -o /home/kiril/workspace/horde3d_python/cython/horde3d.so
/usr/bin/ld: cannot find -llibHorde3D

这是非常特殊的,因为 libHorde3D.so 存在于我的 /usr/lib 和 /opt/lib 中,链接器的搜索路径在 /etc/ld.conf 中配置为查看这些目录,我尝试了使用以下变量设置搜索路径: LD_LIBRARY_PATH、LIBRARY_PATH、LDFLAGS,以及直接传递:

python2 setup.py build_ext -i -L/opt/lib

我做了一个ldconfig -v 并列出了该库:

/usr/lib:
    libHorde3D.so -> libHorde3D.so
/opt/lib:
    libHorde3D.so -> libHorde3D.so

为了更好的衡量,我尝试将所有者更改为“root”,但仍然没有。

这里发生了什么?特别是因为如果从 Code::Blocks 调用链接器(在处理一些补充 C++ 代码时),我能够链接库。

提前致谢!

【问题讨论】:

    标签: gcc shared-libraries ld cython archlinux


    【解决方案1】:

    我认为您只需从 -l 参数中删除单词 lib,因此将其更改为 -lHorde3D

    【讨论】:

    • 这确实有效,谢谢。奇怪的是我必须用 lib 字链接我所有的其他库。
    猜你喜欢
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2014-06-30
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多