gpt4 book ai didi

macos - OS X 运行时链接器发现错误的 lib 版本

转载 作者:行者123 更新时间:2023-12-02 05:11:50 24 4
gpt4 key购买 nike

我有一个从我的 Python 程序调用的 C++ 共享库。 C++ 库是用我在 OS X 上使用自制软件安装的 HDF5 编译的,因此它驻留在 /usr/local/lib 中。现在的问题是我还安装了 PyTables,其中包括旧版本的 libhdf5,安装在 /Library/Frameworks/EPD64.framework/Versions/Current/...

我可以很好地编译和链接我的库,otool -L 确实指向 /usr/local/lib/libhdf5.dylib。但是,当我尝试从 Python 运行它时,出现版本不匹配错误。运行时链接器以某种方式加载了旧的 hdf5 库。

一种解决方法是将 hdf5 构建为静态库,但我想找到一个更简洁的解决方案 - 如何说服运行时链接器使用更新的库?我已经尝试设置 DYLD_LIBRARY_PATH,但这只会破坏其他一切(Python 和 MacVim 无法启动)。

最佳答案

你能提供更多信息吗?我有一些选择(和问题)。

如果我没理解错的话,你有一个使用 lib_ver_a.dyld 的库和一个使用 lib_ver_b.dyld 的 pyTables。 IE。相同的库但不同的版本。

你可以:

  1. 编译您的库以使用与 pyTables 相同的版本(编译时 DYLD_LIB...)并使用 pyTables 库运行您的程序:DYLD_LIBRARY_PATH=/correct/path/lib python myprog.py

  2. 升级你的 xcode(你有哪个版本?还有哪个 osx 版本?)。这会升级您的库和 pyTable(注意,最新的不一定是最稳定的)

您还应该检查调用的是哪个 python(自定义的还是苹果的)。

也有可能在链接时定义特定的 dyld(你使用 gcc 还是 ld 进行链接?我可能会在这里遗漏一些选项):

gcc/path/lib1.dyld myLib.c -o myLib.o

这样你的库就会链接到特定版本的库(注意!我不记得确切的细节,但我可以把它们挖出来)。

希望对您有所帮助。

朱哈

关于macos - OS X 运行时链接器发现错误的 lib 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5126268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com