我正在尝试在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
答案 0 :(得分:1)
使用g ++生成dylib文件时出错。我不认为用g ++生成dylib文件是必要的,甚至不可能,但我找到了一种方法来消除错误。我没有检查生成的dylib是否运行良好。我可以毫无问题地获取静态库文件,因此可以将库与g ++ 4.8一起使用。
问题是g ++有很多选项无法识别:-h -B -R在构建dylib文件时。如果您只想要静态库,则可以获取它们。
我不得不修改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 ;