在Red Hat 6下编译GCC 4.8.5遭遇链接错误求助
解决RHEL6编译GCC4.8.5时的libiberty PIC重定位错误
我之前在Red Hat 6系统编译GCC 4.8.5时碰到过完全相同的问题,这个错误本质是libiberty库没有以-fPIC选项编译,导致无法生成符合共享库要求的目标文件,最终链接失败。下面是亲测有效的解决步骤:
步骤1:清理编译残留
首先彻底清理之前的编译文件,避免旧的编译产物干扰:
make distclean
步骤2:重新配置并强制启用-fPIC
重新运行configure命令,在末尾添加CFLAGS="-fPIC"和CXXFLAGS="-fPIC",强制所有编译单元(包括libiberty)都使用位置无关代码:
./configure --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release \ --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object \ --enable-languages=fortran,c --prefix=/opt/gcc4.8.5 \ CFLAGS="-fPIC" CXXFLAGS="-fPIC"
步骤3:重新编译
执行make命令重新编译:
make
备选方案(如果上述方法无效)
如果配置时传入的CFLAGS没有生效,可以手动修改libiberty的Makefile:
- 进入libiberty目录:
cd gcc-4.8.5/libiberty - 打开Makefile,找到
CFLAGS配置行,添加-fPIC参数 - 返回主目录重新执行
make
额外提示:安装编译依赖
Red Hat 6的系统默认依赖可能不全,建议先安装必要的开发包,避免后续出现其他编译错误:
yum install zlib-devel mpfr-devel gmp-devel mpc-devel
内容的提问来源于stack exchange,提问作者pwe
相关产品推荐
相关产品推荐

