首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OS X运行时链接器找到错误版本的lib

OS X运行时链接器找到错误版本的lib
EN

Stack Overflow用户
提问于 2011-02-26 18:09:51
回答 1查看 544关注 0票数 3

我的Python程序调用了一个C++共享库。C++库是用HDF5编译的,我是用OS上的自制软件安装的,所以它驻留在/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无法启动)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-22 06:03:01

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

如果我没记错的话,您有一个使用lib_ver_a.dyld的库和一个使用lib_ver_b.dyld的pyTables库。即相同的库但不同的版本。

您可以执行以下任一操作:

  1. 编译您的库以使用与pyTables相同的版本(DYLD_LIB...在编译时),并使用pyTables库运行您的程序: DYLD_LIBRARY_PATH=/correct/path/lib python myprog.py
  2. Upgrade您的xcode (您有哪个版本?还有哪个osx版本?)。这将升级您的库和pyTables (请小心,最新的不一定是最稳定的)

你还应该检查你调用的是哪一个python (定制的还是苹果的)。

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

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

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

我希望这能帮到你。

br

Juha

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5126268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档