HCRM博客

如何在CentOS系统上进行编译操作?

CentOS编译指南

一、环境准备

如何在CentOS系统上进行编译操作?-图1
(图片来源网络,侵权删除)

核心组件

在进行编译时,需要先使用yum安装编译工具,必须要安装的就是gcc(GNU Compiler Collection)GNU编译器套件,其中包含了C、C++、ObjectiveC、Fortran、Java、Ada、Go语言前端,也包含了对应语言的库,几乎可以满足绝大部分源码软件对编译环境的需要,安装后可解决以下问题:如果yum使用出现问题,可进传送门:Linux软件管理 YUM工具。

其他组件

在进行实际软件安装时,由于软件与软件之间可能也会存在依赖和调用关系,如:在源码编写时引入了某个类库,如果我们的系统中没有相关的类库,就会编译失败,这个时候我们只要根据报错信息安装相应的缺失类库即可,以下列出了一些常用的类库:pcre, zlib, curl, openssl。

二、安装流程

解压

编译安装的第一步与解压安装类似,需要先进行解压缩,一般都会包含以下目录和内容:src目录:软件源码存放位置;LICENSE:许可及权限信息;README:帮助说明文档;configure:用于检测当前系统环境,用户自定义配置,以及生成makefile文件;Makefile:有可能直接存在,大多数情况下在执行configure后出现,用来指定编译的顺序及其他的复杂的功能操作。

配置

编译安装的第一步就是执行configure脚本,会检查编译构建当前软件的所需环境,同时用户可以根据需要指定相关的配置,所有的选项以‌开头使用等号连接配置项与配置的值,如:‌prefix=/usr/local/。

prefix:指定编译安装时的目标路径,相当于自定义软件安装位置。

如何在CentOS系统上进行编译操作?-图2
(图片来源网络,侵权删除)

bindir:指定二进制文件的安装位置。

sbindir:指定超级二进制文件的安装位置。

datadir:指定数据文件的安装位置。

include:指定头文件的安装位置。

infodir:指定info文档格式文件的安装位置。

mandir:指定帮助文档的安装位置。

如何在CentOS系统上进行编译操作?-图3
(图片来源网络,侵权删除)

在不指定安装位置时,将会安装到默认位置,通常分布在/usr/local中。

编译

在进行configure后,如果环境不存在问题,会生成对应的Makefile文件,用于执行make命令时调用。

在make过后,其实软件已经完成了安装,会在源码解压目录中生成构建完成的文件,如:Nginx软件make后会在obj文件夹中生成如下文件。

编译检查

编译后可以使用make test或make check命令再次检查编译过程是否正确。

编译安装

执行最后一步:编译安装,根据configure阶段的配置,将已经生成的软件安装到指定的目录中去,可以对可执行文件定义软连接或者添加到环境变量,方便使用。

三、常见问题解答

Q1: 如何修改内核配置?

A1: 在编译之前,首先需要执行清理命令,执行:make mrproper来清除以前的配置,回到默认配置,然后再运行:make menuconfig生成.config文件,利用键盘方向键进行选择,直接全部使用默认参数,选定save项,并采用默认的配置文件名.config。

Q2: 如何设置以后默认从新的 Kernel 启动?

A2: sudo awk F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg && sudo grub2setdefault 0 && sudo grub2mkconfig o /boot/grub2/grub.cfg。

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