我想将我项目中的一些动态库与 scons 链接起来。
例子:
源/main.cpp
工具/lib/libboost_system.dylib
二进制位置
源/progbinary
我的问题是,在链接过程之后,二进制文件找不到 libboost_system.dylib
dyld:库未加载:libboost_system.dylib
otool -L
显示问题。我可以用一个更正路径的小脚本来解决这个问题。但我想在 scons 中做到这一点。
在 linux 上真的很简单,我只需要设置RPATH
in scons。
----- 在@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 源/prog -dynamiclib -install_name @executable_path/tools/lib/libboost_system.dylib 源/main.o -Ltools/lib -lboost_system