我正在尝试用从端口安装的g++4.8在Mac上构建boost库。
我制作了~/user-config.jam,并使用g++ 4.8编译器添加了一行using gcc : : g++-mp-4.8 ; go。我已经在brew install bjam上安装了bjam和b2。
问题是,当我使用b2命令构建boost时,会出现以下链接错误:
ld: unknown option: -R
collect2: error: ld returned 1 exit status这是因为g++4.8不能像苹果的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 发布于 2013-07-03 05:49:58
这是一个使用g++生成dylib文件的错误。我不认为用g++生成dylib文件是必要的,甚至是不可能的,但我只是找到了一种方法来消除这个错误。我没有检查生成的dylib是否工作正常。我可以毫不费力地获取静态库文件,所以在g++4.8中使用这些库就可以了。
问题是有很多g++无法识别的选项:构建dylib文件时的-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 ;第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 ;https://stackoverflow.com/questions/17431933
复制相似问题