[英]building lib with pybind11 linking other shared lib
我的项目回复了一个 SO 文件,我将通过cmake
安装在我的项目文件夹下。当我运行python setup.py install
时,它可以工作文件
但是我是通过pip安装的,因为pip会把工程复制到一个tmpfile中,安装后会被删除,SO文件也会被删除。 因此,当我导入我的项目时,由于找不到 SO 文件而失败。
当然,我可以将 SO 文件安装到/usr/local/lib
,但我不想
任何人都有解决它的想法?
您需要使您的共享库在运行时可被发现。 相同的规则适用于常规 C++ 可执行文件。
这里有几个选项(列表可能不完整):
/usr/lib/
)/etc/ld.so.conf.d/my_lib.conf
LD_LIBRARY_PATH
LD_PRELOAD
运行 python 解释器RPATH
属性。我个人使用后一个选项:它允许我自由使用 virtualenv
如果你有轮子 package,你也可以看看auditwheel 。
auditwheel repair
:将这些外部共享库复制到轮子本身,并自动修改适当的 RPATH 条目,以便在运行时获取这些库。 这实现了类似于库已被静态链接而无需更改构建系统的结果。 建议打包者捆绑,如 static 链接,可能涉及版权问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.