首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用完整路径链接到Mac上的动态库

使用完整路径链接到Mac上的动态库
EN

Stack Overflow用户
提问于 2009-12-21 06:05:07
回答 4查看 33.2K关注 0票数 21

我正在链接一个(Python扩展)库,该库使用以下命令(使用cmake生成)嵌入Matlab引擎。

代码语言:javascript
运行
复制
c++ -mmacosx-version-min=10.6 -bundle -headerpad_max_install_names  -o library.so library.o /Applications/MATLAB_R2009b.app/bin/maci64/libeng.dylib /Applications/MATLAB_R2009b.app/bin/maci64/libmx.dylib -framework Python

结果是

代码语言:javascript
运行
复制
$ otool -L library.so
library.so:
    @loader_path/libeng.dylib (compatibility version 0.0.0, current version 0.0.0)
    @loader_path/libmx.dylib (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/Python.framework/Versions/2.6/Python (compatibility version 2.6.0, current version 2.6.1)
    /opt/local/lib/gcc44/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.13.0)
    /opt/local/lib/gcc44/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.0)

但是,当我尝试使用该库时,我收到一条错误消息:

代码语言:javascript
运行
复制
ImportError: dlopen(./library.so, 2): Library not loaded: @loader_path/libmex.dylib
  Referenced from: ./library.so
  Reason: image not found

我认为问题源于这样一个事实,即使我给了g++完整路径,链接器还是以@loader_path/libeng.dylib的形式包含了matlab dylib文件,而不是使用完整路径。如何强制链接器使用完整路径?

我知道一种解决方案是使用

代码语言:javascript
运行
复制
export DYLD_LIBRARY_PATH=/Applications/MATLAB_R2009b.app/bin/maci64:$DYLD_LIBRARY_PATH

这是这些库文件所在的位置,但我想避免这种情况,因为它会导致其他一些问题。

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

https://stackoverflow.com/questions/1937232

复制
相关文章

相似问题

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