在Rocky 9上使用源码编译的gcc-13解决annobin编译错误
解决Rocky 9上源码编译GCC-13后的annobin编译错误
问题根源
你遇到的问题不是源码编译的GCC-13自带annobin调用,而是Rocky 9系统默认的编译环境(比如rpm-build相关宏、全局CFLAGS/CXXFLAGS变量)自动注入了annobin相关编译参数,但你源码编译的GCC并没有安装annobin插件,所以触发找不到文件的错误;后续添加禁用参数时,因为环境里没有先指定-fplugin=annobin,才会出现参数顺序错误。
解决方案
方法一:清理环境变量中的annobin参数
直接移除全局编译变量里的annobin相关内容,再执行编译流程:
- 先查看当前环境中的编译参数:
echo $CFLAGS echo $CXXFLAGS
- 重置CFLAGS/CXXFLAGS为不含annobin的基础参数:
export CFLAGS="-O2 -g" export CXXFLAGS="-O2 -g"
- 重新执行automake项目的编译:
./configure && make && make install
如果不想全局修改,也可以在configure命令行临时覆盖:
./configure CFLAGS="-O2 -g" CXXFLAGS="-O2 -g"
方法二:直接禁用annobin功能
使用GCC自带的-fno-annobin参数直接关闭annobin注解功能,无需处理插件路径问题:
./configure CFLAGS="-fno-annobin" CXXFLAGS="-fno-annobin" make && make install
方法三:为源码编译的GCC安装annobin(可选)
如果你的场景必须保留annobin功能,可以手动编译安装匹配版本的annobin插件:
- 下载与GCC-13版本兼容的annobin源码
- 编译时指定你的GCC-13路径:
./configure --with-gcc=/path/to/your/gcc-13/bin/gcc make && make install
编译完成后,annobin.so会被自动安装到GCC-13的plugins目录,后续编译就不会出现找不到文件的错误。
内容的提问来源于stack exchange,提问作者Phil Evans
相关产品推荐
相关产品推荐

