Macos mac上的scons动态链接
我想将项目中的一些动态库与SCON链接起来 例如: source/main.cpp tool/lib/libboost_system.dylib 二进制位置 源/程序二进制 我的问题是,在链接过程之后,二进制文件找不到libboost_system.dylib dyld:未加载库:libboost_system.dylibMacos mac上的scons动态链接,macos,dynamic,scons,dylib,Macos,Dynamic,Scons,Dylib,我想将项目中的一些动态库与SCON链接起来 例如: source/main.cpp tool/lib/libboost_system.dylib 二进制位置 源/程序二进制 我的问题是,在链接过程之后,二进制文件找不到libboost_system.dylib dyld:未加载库:libboost_system.dylib otool-L显示了问题所在。我可以用一个小脚本来修正路径。但我想用烤饼做这个 在linux上,我只需在SCON中设置RPATH就可以了 -----在@Brady的提示之后
otool-L
显示了问题所在。我可以用一个小脚本来修正路径。但我想用烤饼做这个
在linux上,我只需在SCON中设置RPATH
就可以了
-----在@Brady的提示之后
我为我的库添加链接标志。链接后,我得到了错误
'g++:错误:-仅允许使用-dynamiclib安装\u名称'
所以我添加到命令中
LINKFLAGS='-dynamiclib install_name@executable_path/libwhater.dylib'
现在我得到了如果我调用我的执行消息
'无法执行二进制文件'
及
耳醇-L
让我看看:
@可执行文件路径/tools/lib/libboost\u filesystem.dylib(兼容版本0.0.0,当前版本0.0.0)
libboost_system.dylib(兼容版本0.0.0,当前版本0.0.0)
来自SCON的链接命令如下所示:
/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
这可以在SCON中完成,如下所示:
env = Environment()
env.Append(LINKFLAGS = ['-install_name @executable_path/libWhatever.dylib'])
如果需要编译动态(共享)库,可以使用。获得命令行选项
-install\u name@executable\u path/libwhater.dylib
到ld
。使用make
这需要设置LDFLAGS
,但是我不知道如何使用scons
。感谢您的帮助。使用您的建议后,问题有了一点变化。我编辑了这篇文章above@chak,我在答案中添加了有关使用共享库编译的信息。希望这会有所帮助。我对mac上的编译了解不够,无法提供更多帮助。如果这不起作用,你应该考虑另一个关于Mac编译的问题。