使用g ++ 4.8在Mac上构建boost库的设置工具集配置

时间:2013-07-02 17:24:39

标签: boost g++ b2 g++4.8

我正在尝试在Mac上使用从端口安装的g ++ 4.8构建boost库。

我做了〜/ user-config.jam并添加了一行using gcc : : g++-mp-4.8 ;去使用g ++ 4.8编译器。我用brew install bjam安装了bjam和b2。

问题在于,当我使用b2命令构建boost时,出现此链接错误:

ld: unknown option: -R
collect2: error: ld returned 1 exit status

这是因为g ++ 4.8无法像Apple的g ++ 4.2那样识别-R选项。

如何设置g ++ 4.8的构建选项?这是b2使用的命令。我有this site的配置信息,但我找不到有关设置工具集配置的有用信息。

"g++-mp-4.8"  -Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib" 
-Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config"  -o 
"stage/lib/libboost_system.dylib" -Wl,-h -Wl,libboost_system.dylib -shared -Wl,--start-group 
"bin.v2/libs/system/build/gcc-4.8.0/release/threading-multi/error_code.o"  -Wl,-Bstatic  -Wl,
-Bdynamic  -Wl,--end-group  

1 个答案:

答案 0 :(得分:1)

使用g ++生成dylib文件时出错。我不认为用g ++生成dylib文件是必要的,甚至不可能,但我找到了一种方法来消除错误。我没有检查生成的dylib是否运行良好。我可以毫无问题地获取静态库文件,因此可以将库与g ++ 4.8一起使用。

问题是g ++有很多选项无法识别:-h -B -R在构建dylib文件时。如果您只想要静态库,则可以获取它们。

我不得不修改gcc.jam文件而不提供选项。

来自... / tools / build / v2 / tools / gcc.jam

取消注释生成错误选项的代码。

第855-858行删除-B选项

# toolset.flags $(toolset).link FINDLIBS-ST-PFX
#     $(condition)/<runtime-link>shared : -Wl,-Bstatic : unchecked ;
# toolset.flags $(toolset).link FINDLIBS-SA-PFX
#     $(condition)/<runtime-link>shared : -Wl,-Bdynamic : unchecked ;

第815-820行删除-R选项

#toolset.flags $(toolset).link OPTIONS     $(condition)/<strip>on : -Wl,--strip-all   : unchecked ;
#toolset.flags $(toolset).link RPATH       $(condition)           : <dll-path>        : unchecked ;
#toolset.flags $(toolset).link RPATH_LINK  $(condition)           : <xdll-path>       : unchecked ;
#toolset.flags $(toolset).link START-GROUP $(condition)           : -Wl,--start-group : unchecked ;
#toolset.flags $(toolset).link END-GROUP   $(condition)           : -Wl,--end-group   : unchecked ;

第479行删除-h选项

#SONAME_OPTION = -h ;