Boost 设置用于在Mac上使用g++;4.8

Boost 设置用于在Mac上使用g++;4.8,boost,g++,b2,g++4.8,Boost,G++,B2,G++4.8,我正在尝试在Mac上构建boost库,从端口安装g++4.8 我制作了~/user-config.jam,并使用gcc::g++-mp-4.8添加了一行使用g++4.8编译器。我已将bjam和b2与brew安装bjam一起安装 问题是,当我使用b2命令构建boost时,出现以下链接错误: ld: unknown option: -R collect2: error: ld returned 1 exit status 这是因为g++4.8不能像苹果的g++4.2那样识别-R选项 如何设置g++

我正在尝试在Mac上构建boost库,从端口安装g++4.8

我制作了~/user-config.jam,并使用gcc::g++-mp-4.8添加了一行
使用g++4.8编译器。我已将bjam和b2与
brew安装bjam
一起安装

问题是,当我使用
b2
命令构建boost时,出现以下链接错误:

ld: unknown option: -R
collect2: error: ld returned 1 exit status
这是因为g++4.8不能像苹果的g++4.2那样识别-R选项

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

"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  

这是使用g++生成动态库文件的错误。我认为用g++生成dylib文件是不必要的,甚至是不可能的,但我只是找到了一种消除错误的方法。我没有检查生成的动态库是否工作正常。我可以毫无问题地获取静态库文件,因此可以使用g++4.8中的库

问题是有许多选项g++无法识别:-h-B-R在构建动态库文件时。如果你只是想要静态库,你可以得到它们

我不得不修改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 ;
#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 ;
#SONAME_OPTION = -h ;