【发布时间】:2021-06-10 17:43:31
【问题描述】:
我正在用柯南打包libA 共享库。它正确构建。我的test_package 包正确复制了libA.so 文件。
然后,当它运行时,柯南给了我错误
./example: erro rwhile loading shared libraries: libA.so.1: cannot open shared object file: No such file or directory
这是因为文件是libA.so,而不是libA.so.1。当我将 libA.so 重命名为 libA.so.1 并运行 ./example 时,整个过程都可以正常工作。
在libA conanfile.py 的package_info 中,我确实有
self.cpp_info.libs = ["libA.so"]
我也试过
self.cpp_info.libs = ["A"]
但两者都不起作用。
如何让我的测试包寻找libA.so,而不是libA.so.1?
【问题讨论】:
-
请显示minimal reproducible example。
libA可能将其soname设置为libA.so.1,所以这就是链接器(与柯南无关)在与libA.so链接时插入到您的可执行文件中的内容 -
只使用 ["A"] 就足够了,不要使用全名。您似乎只复制了 libA.so,它是 libA.so.1 的符号链接。问题不在于柯南,而在于你如何建立你的图书馆以及你正在复制什么。您可以使用 self.copy("libA.*", dst="lib", ...) 复制所有内容,包括符号链接。