如何解决柯南正在寻找 libA.so.1 而不是 libA.so
我正在 Conan 中打包 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
时,整个事情都起作用了。
在 package_info
libA
的 conanfile.py
中,我确实有
self.cpp_info.libs = ["libA.so"]
我也试过
self.cpp_info.libs = ["A"]
但两者都不起作用。
如何让我的测试包查找 libA.so
而不是 libA.so.1
?
解决方法
我在打包步骤中做了这个
self.copy("*.h",dst="include",src="src",keep_path=False)
self.copy("*.so",dst="lib",keep_path=False)
tools.rename("src/libA.so","src/libsA.so.1")
self.copy("src/libA.so.1",keep_path=False)
libA
的 makefile 确实将 libA.so.1
设置为 soname。所以我复制了 .so
文件两次;一次为 .so
,一次为 .so.1
。 libA
附带的 makefile 没有生成自己的 .so.1
。这就是我需要复制的原因。我有一种感觉,这不是执行此操作的最佳方式,但确实有效。
更新:
现在我正在使用
self.copy("*.h",keep_path=False)
os.symlink("libA.so","libA.so.1")
self.copy("libA.so*",symlinks=True,keep_path=False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。