gcc安装步骤

记录一下gcc简单安装步骤

  1. 下载源码包:
    https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz
  2. 解压后进入文件夹使用自带脚本下载依赖包:./contrib/download_prerequisites
  3. 创建build目录,cd build后:./…/configure --prefix=install路径 --disable-checking --disable-multilib --enable-languages=c,c++
  4. make && make install
  5. 如果出现以下报错,注意gcc的lib路径(环境要干净)
    在这里插入图片描述

报错:/public/home/lijn/soft/gcc-9.1.0/host-x86_64-pc-linux-gnu/prev-gcc/cc1: /public/home/lijn/soft/gcc-9.1.0/x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6: versionGLIBCXX_3.4.29’ not found (required by /public/home/lijn/soft/gcc-9.1.0/host-x86_64-pc-linux-gnu/prev-gcc/cc1)

  1. 查看下cc1:/public/home/lijn/soft/gcc-9.1.0/host-x86_64-pc-linux-gnu/prev-gcc/cc1 -v

  2. 查看下装的gcc中libstdc++.so.6链接的库:

    [lijn@Stream9 gcc-9.1.0]$ ldd /public/home/lijn/soft/gcc-9.1.0/x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6
    linux-vdso.so.1 (0x00007ffe6bd94000)
    libm.so.6 => /usr/lib64/libm.so.6 (0x00007f59b8bc9000)
    libc.so.6 => /usr/lib64/libc.so.6 (0x00007f59b8800000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f59b8e86000)
    libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f59b8bae000)

  3. 搜索libstdc++.so.6库中指定的符号:可以看到装的gcc需要的这个库中确实没有3.4.29的

    [lijn@Stream9 gcc-9.1.0]$ nm /public/home/lijn/soft/gcc-9.1.0/x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6 | grep “3.4.2”
    0000000000000000 A GLIBCXX_3.4.2
    0000000000000000 A GLIBCXX_3.4.20
    0000000000000000 A GLIBCXX_3.4.21
    0000000000000000 A GLIBCXX_3.4.22
    0000000000000000 A GLIBCXX_3.4.23
    0000000000000000 A GLIBCXX_3.4.24
    0000000000000000 A GLIBCXX_3.4.25
    0000000000000000 A GLIBCXX_3.4.26

  4. 查看系统中cc1的链接文件:

    [lijn@Stream9 gcc-9.1.0]$ ldd /public/home/lijn/soft/gcc-9.1.0/host-x86_64-pc-linux-gnu/prev-gcc/cc1
    linux-vdso.so.1 (0x00007ffc7ccfe000)
    libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f72df800000)
    libm.so.6 => /usr/lib64/libm.so.6 (0x00007f72dfab3000)
    libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f72dfa98000)
    libc.so.6 => /usr/lib64/libc.so.6 (0x00007f72df400000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f72dfb90000)

  5. libstdc++.so.6最终链接到libstdc++.so.6.0.29

​ [lijn@Stream9 gcc-9.1.0]$ ll /usr/lib64/libstdc++.so.6*
​ lrwxrwxrwx. 1 root root 19 Mar 30 06:13 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.29
​ -rwxr-xr-x. 1 root root 2306432 Mar 30 06:17 /usr/lib64/libstdc++.so.6.0.29

​ [lijn@Stream9 gcc-9.1.0]$ file /usr/lib64/libstdc++.so.6.0.29
​ /usr/lib64/libstdc++.so.6.0.29: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=47e2a171712a54733a4cb06672df78fd1a1281a1, stripped

​ [lijn@Stream9 gcc-9.1.0]$ nm /usr/lib64/libstdc++.so.6.0.29
​ nm: /usr/lib64/libstdc++.so.6.0.29: no symbols

  1. 查看libstdc++.so.6.0.29中关键字:可以看到系统库中是存在3.4.29版本的

    [lijn@Stream9 gcc-9.1.0]$ readelf -s /usr/lib64/libstdc++.so.6.0.29 | grep “3.4.29”
    304: 000000000019de00 73 FUNC WEAK DEFAULT 14 […]@@GLIBCXX_3.4.29
    312: 00000000000c7180 946 FUNC GLOBAL DEFAULT 14 […]@@GLIBCXX_3.4.29
    404: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS GLIBCXX_3.4.29
    496: 00000000001a1d50 147 FUNC WEAK DEFAULT 14 […]@@GLIBCXX_3.4.29
    639: 00000000001a1350 600 FUNC WEAK DEFAULT 14 […]@@GLIBCXX_3.4.29
    677: 00000000001a2380 147 FUNC WEAK DEFAULT 14 […]@@GLIBCXX_3.4.29
    763: 000000000019d9f0 248 FUNC WEAK DEFAULT 14 […]@@GLIBCXX_3.4.29
    868: 00000000000d9260 595 FUNC GLOBAL DEFAULT 14 […]@@GLIBCXX_3.4.29
    934: 000000000019f890 266 FUNC WEAK DEFAULT 14 […]@@GLIBCXX_3.4.29
    1113: 000000000019fb20 188 FUNC WEAK DEFAULT 14 […]@@GLIBCXX_3.4.29

  2. 改装的gcc编译器中配置选项:

    装gcc时候他是链接的自己安装包里面的库,版本低所以没过,但是系统有满足要求的库版本,所以修改其配置文件,使其编译过程默认链接系统的libstdcxx库

    [lijn@Stream9 gcc-9.1.0]$ ./configure --help | grep lib
    –libexecdir=DIR program executables [EPREFIX/libexec]
    –libdir=DIR object code libraries [EPREFIX/lib]
    –disable-libquadmath do not build libquadmath directory
    –disable-libquadmath-support
    disable libquadmath support for Fortran
    –enable-libada build libada directory
    –enable-libssp build libssp directory
    –disable-libstdcxx do not build libstdc+±v3 directory
    –enable-liboffloadmic=ARG

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值