linux glibc2.12编译,glibc 2.12 升级 2.14

升级原因

安装saltstack出现报错:

Error: Package: PyYAML-3.11-1.el7.x86_64 (salt-latest)

Requires: libc.so.6(GLIBC_2.14)(64bit)

查看当前glibc版本:

# rpm -qa | grep glibc

glibc-headers-2.12-1.209.el6_9.2.x86_64

glibc-common-2.12-1.209.el6_9.2.x86_64

glibc-devel-2.12-1.209.el6_9.2.x86_64

glibc-2.12-1.209.el6_9.2.x86_64

查看当前系统中是否有libc.so.6模块以及支持glibc版本:

# find / -name libc.so.6

/lib64/libc.so.6

# strings /lib64/libc.so.6 | grep GLIB

GLIBC_2.2.5

GLIBC_2.2.6

GLIBC_2.3

GLIBC_2.3.2

GLIBC_2.3.3

GLIBC_2.3.4

GLIBC_2.4

GLIBC_2.5

GLIBC_2.6

GLIBC_2.7

GLIBC_2.8

GLIBC_2.9

GLIBC_2.10

GLIBC_2.11

GLIBC_2.12

GLIBC_PRIVATE

最高支持GLIBC_2.12

升级glibc

官网 选择合适版本下载glibc

所需软件包

We recommend installing the following GNU tools before attempting to

build the GNU C Library:

* GNU 'make' 3.79 or newer

* GCC 4.9 or newer

* GNU 'binutils' 2.25 or later

* GNU 'texinfo' 4.7 or later

* GNU 'awk' 3.1.2, or higher

* Perl 5

* GNU 'sed' 3.02 or newer

* GNU 'autoconf' 2.69 (exactly)

* GNU 'gettext' 0.10.36 or later

* GNU 'bison' 2.7 or later

一般CentOS6自带的gcc都是4.4上下,如果需要更新到4.9及一上,可以查看《gcc 4.4.7 升级到4.9》

编译安装

创建编译目录

# mkdir -p Gcc/{gcc-src,gcc-obj}

gcc-src为源码文件路径,gcc-obj为编译路径

# cd Gcc/gcc-obj

# ../gcc-src/configure --prefix=/usr

checking build system type... x86_64-pc-linux-gnu

checking host system type... x86_64-pc-linux-gnu

checking target system type... x86_64-pc-linux-gnu

checking for a BSD-compatible install... /usr/bin/install -c

checking whether ln works... yes

checking whether ln -s works... yes

checking for a sed that does not truncate output... /bin/sed

checking for gawk... gawk

checking for libatomic support... yes

checking for libcilkrts support... yes

checking for libitm support... yes

checking for libsanitizer support... yes

checking for libvtv support... yes

checking for libmpx support... yes

checking for libhsail-rt support... yes

checking for gcc... gcc

checking for C compiler default output file name... a.out

checking whether the C compiler works... yes

checking whether we are cross compiling... no

checking for suffix of executables...

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether gcc accepts -g... yes

checking for gcc option to accept ISO C89... none needed

checking for g++... g++

checking whether we are using the GNU C++ compiler... yes

checking whether g++ accepts -g... yes

checking whether g++ accepts -static-libstdc++ -static-libgcc... no

checking for gnatbind... no

checking for gnatmake... no

checking whether compiler driver understands Ada... no

checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2

checking for objdir... .libs

configure: WARNING: using in-tree isl, disabling version check

The following languages will be built: c,c++,fortran,lto,objc

*** This configuration is not supported in the following subdirectories:

gnattools gotools target-libada target-libhsail-rt target-libgo target-libffi target-liboffloadmic

(Any other directories should still work fine.)

checking for default BUILD_CONFIG...

checking for --enable-vtable-verify... no

/usr/bin/ld: cannot find crti.o: No such file or directory

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.4.7/libgcc_s.so when searching for -lgcc_s

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.4.7/libgcc_s.so when searching for -lgcc_s

/usr/bin/ld: cannot find -lgcc_s

/usr/bin/ld: cannot find -lc

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.4.7/libgcc_s.so when searching for -lgcc_s

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.4.7/libgcc_s.so when searching for -lgcc_s

/usr/bin/ld: cannot find -lgcc_s

/usr/bin/ld: cannot find crtn.o: No such file or directory

collect2: ld returned 1 exit status

configure: error: I suspect your system does not have 32-bit development libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with --disable-multilib.

如果出现上面报错,可能由于没有装32bit lib库,添加--disable-multilib参数即可解决:

# ../gcc-src/configure --prefix=/usr ***--disable-multilib***

或者安装:

# yum install -y libgcc.i686 libgcc-devel.i686

安装

# make

# make install

- 其他报错

configure: error: `GMPLIBS' has changed since the previous run:

之前有编译过gcc,但是没有编译成功,解决办法:

删除gcc-obj目录,重新编译

glibc(GNU C Library)是Linux操作系统中的C语言库,提供了许多函数和组件供开发人员使用。在某些情况下,用户或开发人员可能需要将glibc-2.14降级到glibc-2.12。这可能是因为某些软件或应用程序与glibc-2.12兼容,但在glibc-2.14上运行出现问题。 要将glibc-2.14降级到glibc-2.12,首先需要查找并下载glibc-2.12的源代码。可以从官方网站或其他可信的软件仓库中获取源代码。然后,需要进行编译和安装。 在安装glibc-2.12之前,可能需要卸载或删除当前系统中已安装的glibc-2.14版本。卸载glibc-2.14可能会导致系统不稳定或无法启动,因此在执行此操作之前应备份系统或确认可恢复系统状态。 编译和安装glibc-2.12的过程可能会有一些复杂性,并需要具备一定的编程知识和技能。首先,需要进入glibc-2.12源代码所在的目录,并执行`configure`命令以生成编译环境。然后,使用`make`命令编译源代码,并使用`make install`命令安装glibc-2.12。 安装完成后,可能需要进行一些配置,例如更新动态链接器或库的路径。这样确保系统在运行时使用glibc-2.12而不是glibc-2.14。 需要注意的是,将glibc-2.14降级到glibc-2.12可能会导致系统稳定性或兼容性问题。降级glibc可能会影响系统中其他软件的功能和性能。因此,在执行此操作之前,建议先了解软件或应用程序对glibc版本的要求,并评估降级是否是唯一的解决方案。 总之,将glibc-2.14降级到glibc-2.12需要下载、编译和安装glibc-2.12的源代码,并进行一些系统配置。但需要谨慎操作,确保降级前后的系统稳定性和兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值