微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

柯南正在寻找 libA.so.1 而不是 libA.so

如何解决柯南正在寻找 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 libAconanfile.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.1libA 附带的 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 举报,一经查实,本站将立刻删除。