【发布时间】:2013-11-07 21:34:18
【问题描述】:
我想用 scons 链接我项目中的一些动态库。
例子:
source/main.cpp
工具/lib/libboost_system.dylib
二进制位置
源/progbinary
我的问题是,在链接过程之后,二进制文件找不到 libboost_system.dylib
dyld:库未加载:libboost_system.dylib
otool -L 显示问题。我可以用一个更正路径的小脚本来解决这个问题。但我想在 scons 中这样做。
在 linux 上真的很简单,我只需要在 scons 中设置RPATH。
----- 在@Brady 的提示之后
我为我的库添加了 Linkflags。链接后出现错误
'g++: 错误:-install_name 只允许使用 -dynamiclib'
所以我添加到命令中
LINKFLAGS = '-dynamiclib install_name @executable_path/libWhatever.dylib'
现在我得到如果我调用我的执行消息
'无法执行二进制文件'
和
otool -L
给我看:
@executable_path/tools/lib/libboost_filesystem.dylib(兼容版本0.0.0,当前版本0.0.0) libboost_system.dylib(兼容版本0.0.0,当前版本0.0.0)
scons 的链接命令如下:
/opt/local/bin/g++ -o source/prog -dynamiclib -install_name @executable_path/tools/lib/libboost_system.dylib source/main.o -Ltools/lib -lboost_system
【问题讨论】:
-
您需要获取命令行选项
-install_name @executable_path/libWhatever.dylib到ld。对于make,这需要设置LDFLAGS,但是我不知道如何使用scons。