Linux GCC7.5和Kernel 5.6.3升级方法

Linux GCC7.5和Kernel 5.6.3升级方法重启后查看内核版本[root@localhost~]# uname -r5.6.35. Debug如果报以下错误make[1]: *** No

大家好,欢迎来到IT知识分享网。

1. 前言

Linux内核升级到最新的版本,需要先升级gcc的版本,本文主要以RHEL8.0为OS,讲解Linux内核5.6.3版本和GCC编译器7.5为例,讲解整个更新过程。

2. 升级必须的安装包

OS安装选择的是Desktop下包全选,如果是其他安装,需要检查OS是否安装gcc,libstdc++,make以及kernel-headers,kernel-devel,ncurses-devel等等,如果没有安装,可以通过yum安装”development tools” group.

yum groupinstall “Development Tools

yum install ncurses-devel

3. 更新gcc编译器版本到7.5

  1. 解压gcc压缩包到指定目录

tar -xvf gcc-7.5.0.tar.gz -C /usr/local/src/

一般我们将第三方的软件源代码放置在/usr/local/src目录

  1. 下载必要的编译库

cd /usr/local/src/gcc-7.5.0

可以通过目录contrib/download_prerequisites查看到必要的库有以下几个:

Linux GCC7.5和Kernel 5.6.3升级方法

必需的编译库

如果机器已经连接互联网,则可以通过执行以下命令,直接从互联网自动下载

./contrib/download_prerequisites

当然如果没有联网,可以通过自己手动下载,下载地址是ftp://gcc.gnu.org/pub/gcc/infrastructure/,然后将这四个压缩包放置到gcc源码根目录/usr/local/src/gcc-7.5.0,然后再执行即可。

[root@localhost gcc-7.5.0]# cp /mnt/Private/Compressed/gmp-6.1.0.tar.bz2 .

[root@localhost gcc-7.5.0]# cp /mnt/Private/Compressed/mpfr-3.1.4.tar.bz2 .

[root@localhost gcc-7.5.0]# cp /mnt/Private/Compressed/mpc-1.0.3.tar.gz .

[root@localhost gcc-7.5.0]# cp /mnt/Private/Compressed/isl-0.16.1.tar.bz2 .

[root@localhost gcc-7.5.0]# ./contrib/download_prerequisites

gmp-6.1.0.tar.bz2: OK

mpfr-3.1.4.tar.bz2: OK

mpc-1.0.3.tar.gz: OK

isl-0.16.1.tar.bz2: OK

All prerequisites downloaded successfully.

  1. 编译安装
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib make -j24 make install shutdown -r now 

–disable-multilib 意味着只编译64bit编译器,如果想编译32bit编译器,可以用–enbale-multilib,OS必须安装i686的包,这些包默认是没有安装的。 –enbale-languages 指定编译的语言,如果不指定,可能需要好几天的时间。 make -j24 并行多线程编译,可以减少编译时间。24指定jobs number.可以指定为CPU支持的最大线程数。

48个jobs,我这可是一个48 cores的机器,编译用时13分钟,如果是个人PC,那估计没个几个小时,是不可能完事,开始编译,该干嘛就可以干嘛去了。

安装完成后必须重启系统,不然下一步升级内核会报错

重启后,gcc -v查看当前gcc版本是否是最新的版本。

[root@localhost ~]# gcc -v

Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.5.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ./configure –enable-checking=release –enable-languages=c,c++ –disable-multilib Thread model: posix gcc version 7.5.0 (GCC)

4. 更新内核到5.6.3

开始编译前,需要先安装libelf-dev, libelf-devel或者elfutils-libelf-devel。 RHEL8.0 OS, 我们选择安装elfutils-libelf-devel.

yum install elfutils-libelf-devel

还需要安装openssl-devel加解密开发包

yum install openssl-devel

  1. 解压内核源文件到指定目录

tar -xvf linux-5.6.3.tar.xz -C /usr/src/kernels/

一般我们将内核源代码放置在目录/usr/src/kernels,该目录同样是系统默认内核的kernel source所在位置。

  1. 编译安装

cd /usr/src/kernels/linux-5.6.3/ sh -c ‘yes “” | make oldconfig’ make -j48 make modules_install make install

第二个命令用于将当前系统的内核选项生成到当前目录,会在内核目录生成.config文件,该文件内记录了哪些编译为模块,哪些是buildin。

另外,

可以通过make clean清理编译环境,这个命令会清理掉已经编译的,但不包含配置文件,如.config

可以通过make mrproper清理编译环境,包含所有的编译内容。

编译过程中显示的CC 是check compile的缩写。

[M]表示编译为module,否则为buildin。

如果有特殊编译需求,可以通过make menuconfig逐一配置编译项。

  1. 切换启动内核为新的内核

grub2-set-default 0, 切换默认引导项为第一项,可以查看grub.cfg文件。

  1. 重启后查看内核版本

[root@localhost ~]# uname -r

5.6.3

5. Debug

  1. 如果报以下错误

make[1]: *** No rule to make target ‘certs/rhel.pem’, needed by ‘certs/x509_certificate_list’.

可以查看.config文件中,CONFIG_SYSTEM_TRUSTED_KEYS=”certs/rhel.pem”改为CONFIG_SYSTEM_TRUSTED_KEYS=””即可。

Linux GCC7.5和Kernel 5.6.3升级方法

调整编译项

欢迎交流关注,谢谢

Linux GCC7.5和Kernel 5.6.3升级方法

关注公众号

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/50867.html

(0)
上一篇 2024-08-21 16:15
下一篇 2024-08-22 20:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信