编译Binutils时如何将-fcommon传入CFLAGS解决重定义错误
解决Binutils编译时-fcommon选项的传入错误问题
问题说明
编译Binutils的gas和gold组件时遇到多重定义错误,尝试通过添加-fcommon编译选项解决,但错误地将--fcommon作为configure的命令行参数传入,导致出现如下错误:
configure: error: unrecognized option: `--fcommon'
错误原因
-fcommon是GCC的编译选项,用于处理全局变量的多重定义问题,不是configure脚本的合法参数,直接加到configure命令行里会被识别为无效选项。
正确解决方法
将-fcommon追加到CFLAGS环境变量中,而非作为configure的命令行参数。修改编译脚本中CFLAGS的定义部分即可。
修改后的关键代码片段
# 将-fcommon加入CFLAGS变量 CFLAGS="`pkg-config --cflags 'libprotobuf-c >= 1.0.0'` -fcommon" LDFLAGS=`pkg-config --libs 'libprotobuf-c >= 1.0.0'` \ ../configure --enable-gold --prefix=${PWD_PATH}/executable_binutils \ --disable-werror --enable-shared \ --enable-ld=default \ --enable-plugins \ --enable-64-bit-bfd \ --with-system-zlib \ && make -j$(nproc)
说明
- 移除了原命令中的
--fcommon选项,避免configure报错 - 在
CFLAGS末尾添加-fcommon,让GCC在编译过程中启用该选项,解决多重定义问题
内容的提问来源于stack exchange,提问作者NobinPegasus
相关产品推荐
相关产品推荐

