首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于在带有g++ 4.8的Mac机上构建boost库的设置工具集配置

用于在带有g++ 4.8的Mac机上构建boost库的设置工具集配置
EN

Stack Overflow用户
提问于 2013-07-03 01:24:39
回答 1查看 707关注 0票数 0

我正在尝试用从端口安装的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时,会出现以下链接错误:

代码语言:javascript
复制
ld: unknown option: -R
collect2: error: ld returned 1 exit status

这是因为g++4.8不能像苹果的g++ 4.2那样识别-R选项。

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

代码语言:javascript
复制
"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  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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选项

代码语言:javascript
复制
# 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选项

代码语言:javascript
复制
#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选项

代码语言:javascript
复制
#SONAME_OPTION = -h ;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17431933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档