HCRM博客

CentOS 7编译安装,如何从源码构建和部署软件?

CentOS 7编译安装

一、CentOS 7编译安装Linux内核6.5.2

CentOS 7编译安装,如何从源码构建和部署软件?-图1
(图片来源网络,侵权删除)

1、安装编译环境

执行yum groupinstall "Development Tools" yyum install y openssldevel rpmbuild redhatrpmconfig asciidoc hmaccalc perlExtUtilsEmbed pesign xmlto auditlibsdevel binutilsdevel elfutilsdevel elfutilslibelfdevel ncursesdevel newtdevel numactldevel pciutilsdevel pythondevel zlibdevel rpmbuild命令以安装编译所需的工具链。

2、更新GCC版本

由于CentOS 7自带的GCC版本较低,需更新至更高版本,执行yum install centosreleasescl devtoolset8gcc* yscl enable devtoolset8 bash命令,启用多版本GCC共存。

3、下载内核源代码并解压

从清华大学镜像源下载Linux Kernel 6.5.2的源代码包,执行wget HTTPS://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/linux6.5.2.tar.gztar zxvf linux6.5.2.tar.gz命令进行下载和解压。

CentOS 7编译安装,如何从源码构建和部署软件?-图2
(图片来源网络,侵权删除)

4、配置内核

使用make menuconfig命令进入配置界面,或根据现有内核参数生成新的配置参数文件,执行cp /boot/config3.10.01160.95.1.el7.x86_64 .configmake oldconfig命令进行配置。

5、编译安装内核

执行make j 12 allmake INSTALL_MOD_STRIP=1 modules_install && make modules_install && make install命令进行编译和安装。j 12参数表示使用12个CPU核心进行并行编译。

6、设置启动项

执行sudo awk F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg && sudo grub2setdefault 0 && sudo grub2mkconfig o /boot/grub2/grub.cfg命令,设置默认从新内核启动。

CentOS 7编译安装,如何从源码构建和部署软件?-图3
(图片来源网络,侵权删除)

7、编译成RPM包

执行make rpmpkg j 12make INSTALL_MOD_STRIP=1 rpmpkg j 12命令,编译出可在其他CentOS 7机器上直接安装升级内核的RPM包。

8、删除多余内核

使用uname a命令查看当前使用的内核,确认新内核已成功安装并设置为默认启动项。

CentOS 7编译安装GCC 7.5

1、更新系统及安装相关包

执行sudo yum y updatesudo yum y install bzip2 wget gcc gccc++ gmpdevel mpfrdevel libmpcdevel make zlib zlibdevel命令,更新系统并安装必要的软件包。

2、下载GCC 7.5工程文件

执行wget https://ftp.gnu.org/gnu/gcc/gcc7.5.0/gcc7.5.0.tar.gztar zxvf gcc7.5.0.tar.gz命令,下载并解压GCC 7.5的源代码。

3、安装依赖包

执行./contrib/download_prerequisites命令,下载GCC编译所需的依赖包。

4、生成Makefile文件

执行cd gcc7.5.0../configure enablebootstrap enableshared enablethreads=posix enablechecking=release withsystemzlib enable__cxa_atexit disablelibunwindexceptions enablegnuuniqueobject enablelinkerbuildid withlinkerhashstyle=gnu enablelanguages=c,c++,go,lto enableplugin enableinitfiniarray disablelibgcj enablegnuindirectfunction withtune=generic disablemultilib命令,生成Makefile文件。

5、编译和安装

执行make j4make install命令,进行编译和安装。j4参数表示使用4个CPU核心进行并行编译。

6、更新动态库

检查编译生成的动态库版本,替换旧版本的动态库,并更新环境变量,执行find / xdev name "libstdc++.so*"cp /usr/local/lib64/libstdc++.so.6.0.24 /usr/lib64rm rf /usr/lib64/libstdc++.so.6ln s /usr/local/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6命令。

7、编辑环境变量

~/.bash_profile文件中追加PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/binLD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATHCC=/usr/local/bin/gccCXX=/usr/local/bin/g++路径,并执行source ~/.bash_profile命令使配置生效。

FAQs

1、问题:为什么需要更新GCC版本?

回答:CentOS 7自带的GCC版本较低(4.8.5),不支持C++17等较新的标准,为了编译最新的软件或内核,需要更新到支持这些新特性的GCC版本。

2、问题:编译内核时如何选择并行编译的任务数?

回答:可以根据虚拟机或物理机的CPU核心数来选择,如果虚拟机分配了12个CPU核心,可以使用j 12参数进行并行编译,以提高编译速度。

3、问题:如何验证新内核是否安装成功并设置为默认启动项?

回答:使用uname a命令查看当前使用的内核版本,确认新内核已成功安装,通过编辑/etc/grub2.cfg文件或执行相关命令,设置新内核为默认启动项,重启系统后,再次使用uname a命令验证新内核是否生效。

4、问题:编译GCC时出现依赖错误怎么办?

回答:确保已安装所有必要的依赖包,如果缺少某个依赖包,可以手动下载并安装,检查Makefile文件中的配置选项是否正确,如果问题仍然存在,可以查阅官方文档或社区论坛寻求帮助。

5、问题:如何在CentOS 7上离线安装GCC?

回答:在其他有网络连接的机器上下载GCC及其依赖包的RPM文件,将这些RPM文件复制到CentOS 7机器上,并使用yum localinstall命令进行安装,注意,可能需要解决依赖关系问题,确保所有必要的依赖包都已下载并安装。

分享:
扫描分享到社交APP
上一篇
下一篇