scons dylib动态链接在mac上

时间:2013-10-28 22:25:44

标签: macos dynamic scons dylib

我想用scons链接项目中的一些动态库。

示例:

  

源/ 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

1 个答案:

答案 0 :(得分:2)

根据trojanfoe上面提供的评论: scons dylib dynamic linking on mac

需要将以下内容传递给链接器:

-install_name @executable_path/libWhatever.dylib

这可以在SCons中完成,如下所示:

env = Environment()
env.Append(LINKFLAGS = ['-install_name @executable_path/libWhatever.dylib'])

如果您需要编译动态(共享)库,可以使用SharedLibrary() builder完成。