Boost-Iostreams 1.59 Sparc-Solaris交叉编译失败求助
解决Boost-Iostreams 1.59交叉编译时的-mcpu=v7参数问题
方法一:用bjam/b2自定义工具链配置抵消参数
- 新建一个
user-config.jam文件,写入以下内容:
多数GCC版本支持用using gcc : solaris : sparc-sun-solaris2.10-g++ : <compileflags>-mno-v7 <linkflags>-mno-v7 ;-mno-v7这种反向参数,直接抵消自动添加的-mcpu=v7。 - 编译时带上这个配置文件:
./b2 --user-config=user-config.jam (加上你原本的其他编译参数)
方法二:修改Boost的编译配置文件
- 找到Boost中负责设置SPARC架构参数的文件,比如
boost/config/compiler/gcc.hpp或者tools/build/src/tools/gcc.jam,搜索mcpu=v7相关配置项,直接注释或删除。 - 注意:这种修改会影响所有Boost库的编译配置,后续编译其他库时需要留意。
方法三:通过环境变量覆盖编译参数
- 编译前先设置环境变量,把抵消参数加到最前面:
这种方式会让export CXXFLAGS="-mno-v7 $CXXFLAGS" export LDFLAGS="-mno-v7 $LDFLAGS" ./b2 (加上你原本的其他编译参数)-mno-v7优先于默认的-mcpu=v7生效。
方法四:直接指定目标架构参数
- 如果你清楚目标SPARC的具体架构版本(比如v9),直接指定对应的
-mcpu参数即可:
指定后GCC会自动使用新的架构参数,忽略默认的v7设置。./b2 cxxflags="-mcpu=v9" (加上你原本的其他编译参数)
内容的提问来源于stack exchange,提问作者ibse
相关产品推荐
相关产品推荐

