ftp源码编译-CentOS7 - 从源代码编译程序

源代码编译程序

现代包管理器使安装软件看起来很容易; 只需一个命令,我们就可以从任何配置的存储库安装程序及其依赖项。 然而,Linux 社区和自由软件运动的一个重要价值是能够根据您的需求更改软件(也许您想修复错误或添加新功能)。 对于用编译语言(例如 C)编写的软件,这通常意味着更改程序的源代码并将代码编译为可执行二进制文件。 本教程将指导您编译和安装 GNU Hello 程序。

做好准备

需要具有有效互联网连接的 CentOS 系统。 还应提供可以使用 sudo 升级权限的非特权用户帐户。

怎么做

执行以下步骤从源代码编译并安装程序:

sudo yum install gcc

ftp源码编译-CentOS7 - 从源代码编译程序

curl ftp://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz | tar - zx

cd hello-2.10

./configure --help | less

./configure --prefix=/usr/local

make

sudo make install

hello

ftp源码编译-CentOS7 - 从源代码编译程序

工作准则

本文教您学习从源码编译安装软件的标准配置、制作和安装路线。

最小的 CentOS 安装不包括 C 编译器(一种将 C 编程语言编写的源代码转换为二进制机器可执行格式的程序),因此我们要做的第一件事就是安装 GNU 编译器集合。 由于该软件包将在系统范围内安装,因此 yum 需要提升权限:

sudo yum install gcc

注意

由于 GNU Hello 项目是用 C 编写的,并且包含预先生成的配置脚本,因此我们需要 gccis。 可能还有其他项目需要其他软件,例如 autoconf,来生成配置脚本ftp源码编译,或者需要其他语言(例如 Fortran、C++、Objective-C 和 Go)的编译器支持。 要获得更强大的构建环境,请考虑安装开发工具包组:

sudo yum groupinstall "Development Tools"

ftp源码编译-CentOS7 - 从源代码编译程序

接下来,我们从 FTP 服务器下载了该项目源代码的副本。 该代码作为压缩档案分发,我们使用curl 检索该档案。 我们省略了在上一个秘籍中使用的 -O 参数,但将输出直接通过管道传送到 tar 来解压缩。 这会导致创建一个名为 hello-2.10 的目录,其中包含项目的源代码:

curl ftp://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz | tar -zx

通常,项目将包含多个信息文本文件,因此请随意浏览该目录的内容。 一些常见的文件是:

如果项目使用 GNU Autotools 构建系统(GNU Hello 使用的),我们可以期望在源文件集合中找到配置脚本。 配置的工作是扫描我们系统的构建环境,以确保任何必要的工具和依赖项可用,并生成 Makefile。 Makefile 将包含编译和安装程序的指令,我们传递给配置的任何选项最终都会进入 Makefile。

要查看我们可以使用哪些选项,我们首先使用 --help 运行配置:

./configure --help | less

有些选项可能是项目所特有的,而其他选项则更为通用,与设置路径相关,例如供稍后在构建过程中使用。 一些重要的常规选项如下:

ftp源码编译-CentOS7 - 从源代码编译程序

第二次运行configure时,我们提供--prefix选项:

./configure --prefix=/usr/local

/usr/local 的前缀值表示该目录将用作安装不同文件的各种路径的前缀。 例如,我们安装程序时,将编译好的hello文件复制到PREFIX /bin,即/usr/local/bin下,项目的引导页会安装在PREFIX /share/man下,即/usr/local /分享/伙计,等等。

注意

本节将 GNU Hello 安装为系统范围内可访问的程序。 但不要忘记,您还可以使用 --prefix 选项编译文件并将其安装到您的个人目录中:

./configure --prefix=/home/tboronczyk/.personal

配置生成的 Makefile 后,我们使用 make 执行这些语句来编译项目:

ftp源码编译-CentOS7 - 从源代码编译程序

make

默认情况下,make会在当前目录中查找名为Makefile的文件来运行。 如果由于某种原因目标脚本的名称不同,我们可以通过 -f 选项告诉 make 使用该文件:

make -f ./Makefile

此外,Makefile 通常包含多组指令或目标。 一些共同目标如下:

如果未提供,则默认目标。

理想情况下,我们不想以 root 身份编译软件ftp源码编译,因为 Makefile 可以在任何地方创建任意文件,这些文件可以被攻击者利用。 以标准用户身份执行该文件可以阻止此攻击媒介,因为非特权帐户没有对敏感目录的写访问权限。 这就是为什么当我们将程序及其文件链接到 /usr/local 下的目录时,我们仅使用 sudo 作为安装目标。

也可以看看

有关构建软件的更多信息,请参阅以下资源:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 ftp源码编译-CentOS7 - 从源代码编译程序 https://www.wkzy.net/game/143835.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务