davylin 2024-06-15 17:34 采纳率: 66.7%
浏览 9
已结题

在CentOS6.10中用gcc 4.4.7 编译devtoolset-7-gcc-7.3.1-5.16.el6.src.rpm 报错!

问题遇到的现象和发生背景

[问题]
我在CentOS6.10编译devtoolset-7-gcc-7.3.1-5.16.el6.src.rpm的源码,报错如上图。
mv: cannot stat `/home/linzx/rpmbuild/BUILDROOT/gcc-7.3.1-5.16.el6.x86_64/usr/lib64/libmpxwrappers.*a': No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.lwIA92 (%install)

img

操作环境、软件版本等信息

[编译环境]
操作系统:CentOS6.10
编译器 :gcc 4.4.7
使用命令:rpmbuild -ba gcc.space

源码地址:
https://archive.kernel.org/centos-vault/6.10/sclo/Source/rh/devtoolset-7-gcc-7.3.1-5.16.el6.src.rpm

尝试过的解决方法

[场景情况]
初步分析,空间文件gcc.spec的内容,存要指令:

img

我看了rpmbuild/BUILDROOT/gcc-7.3.11-5.16.el6.x86_64/usr/bin目录,有编译成功的gcc,g++,cpp等程序。

从状态(%install)见,问题象是编译过程中安装libmpxwrappers.*a时,不存在此文件,而报的错误。
经查打,libmpx.*a存在。而libmpxwrappers.*a不存在。
我疑惑不解的是,libmpxwrappers.*a为什么会编译不出来。

我想要达到的结果

在CentOS6.10 用gcc 4.4.7编译成功devtoolset-7-gcc-7.3.1-5.16.el6.src.rpm。
实现编译出二进制包和源码包:
gcc-7.3.1-5.16.el6.rpm
gcc-7.3.1-5.16.el6.src.rpm

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-15 17:34
    关注

    引自免费微信小程序:皆我百晓生

    从你提供的信息来看,问题的核心在于libmpxwrappers.*a库文件未能被正确构建,这可能是由于GCC版本不兼容或者某些依赖未被满足导致的。在CentOS 6.10上使用较旧的GCC 4.4.7来编译现代的GCC 7.3.1可能会遇到各种兼容性问题。

    解决这个问题的一种可能方案是尝试更新你的基础工具链到一个更现代的版本,或者至少确保所有必要的依赖都已经安装。但是,考虑到你的目标是在CentOS 6.10上工作,一个更实际的方法是调整构建过程以适应当前的环境。

    这里有几个步骤你可以尝试:

    1. 检查并安装所有必需的依赖: 确保所有GCC编译时所需的依赖库都已安装。例如,make, autoconf, automake, bison, flex, m4, texinfo, zlib, ncurses, libmpc, mpfr, gmp, 和 binutils 应该都是可用的。

    2. 修改spec文件: 在gcc.spec文件中,你看到的%global build_libmpx控制着是否构建libmpx相关库。如果你的系统不支持或不需要libmpx,可以尝试将这个变量设置为0,然后重新构建。

    3. 手动构建: 考虑到rpm构建失败,你可以尝试手动解压源码包,并按照官方的GCC文档进行配置和构建。这通常涉及到运行./configure脚本,然后执行makemake install。这样可以让你有更多的控制权,以便解决构建过程中可能出现的具体问题。

    4. 使用Docker或虚拟机: 如果上述方法都无法解决问题,考虑在一个更现代的环境中(如Docker容器或虚拟机)构建GCC,然后将编译好的二进制文件移植回你的CentOS 6.10系统。

    下面是手动构建GCC的基本步骤,你可以参考:

    # 解压源码
    tar xf devtoolset-7-gcc-7.3.1-5.16.el6.src.rpm
    
    # 进入源码目录
    cd gcc-7.3.1
    
    # 配置(注意这里的路径应根据你的实际情况调整)
    ./contrib/download_prerequisites
    ./configure --prefix=/opt/gcc-7.3.1 \
                --enable-languages=c,c++ \
                --disable-multilib \
                --enable-shared \
                --enable-bootstrap \
                --with-system-zlib
    
    # 构建
    make
    
    # 安装(可能需要管理员权限)
    sudo make install
    

    请记住,在执行make install之前,确保你有足够的权限,或者使用sudo命令。此外,构建过程可能需要一些时间,具体取决于你的系统性能。

    希望这些建议能帮助你解决问题。如果在执行这些步骤时遇到任何具体错误,提供详细的错误信息将有助于进一步诊断和解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月23日
  • 已采纳回答 6月15日
  • 创建了问题 6月15日

悬赏问题

  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播