Linux 之旅 21:编译安装软件

Linux 之旅 21:编译安装软件

图源:鸟哥的Linux私房菜

Tarball

为了节省 络带宽和存储空间,源码一般都会被打包和压缩,以或的方式提供,所以会被称为。

一般会包含以下内容:

  • 源码文件
  • 环境监测程序(或等)
  • 软件的说明和安装手册(或)

软件的升级与安装

对于软件的升级与安装,现代的Linux发行版多使用包管理器,如Redhat系的和Ubuntu系的,使用包管理器可以很方便地在线下载和升级软件。

但是依然存在需要手动下载和安装软件的情况,比如包管理器的仓库中没有的小众软件,或者仓库中有,但是版本比较老,你需要最新的版本等。

自己下载源码然后安装就相对麻烦很多了,需要我们前边说过的编译环节,整个步骤主要有:

  • 从发型商那里下载。
  • 解压。
  • 使用等编译工具进行编译(生成)。
  • 使用将目标文件()与函数库进行链接,生成可执行文件。
  • 将生成的可执行文件和相关配置文件部署到指定目录,完成安装。

其中第3、4步可以使用和等工具简化。

示例

Hello World

这里通过编写、编译一个最简单的C程序的方式说明最简单的编译步骤。

一般Linux发行版不会默认安装等编译工具,所以首先需要安装相关工具:

大多数初学者的第一个程序都是从开始的,下面是C语言版的:

下面使用编译并执行:

默认情况下可以自动编译并处理程序对函数库的链接,并生成一个可执行文件。

当然你也可以逐步处理,并生成一个指定名称的可执行文件:

其中是编译源码并生成相应的目标文件,但并不会链接到函数库。是将多个编译好的目标文件链接到函数库,并输出为一个指定名称的可执行文件。

多源码程序的编译

上面是最简单的程序,只有一个源码文件,大多数情况下程序会有多个源码文件组成,下面看一个稍微复杂点的例子:

编译并运行:

还可以添加其它参数实现更多功能,比如:

在编译的时候使用参数可以优化编译结果,当然可能会话费更长的时间。

如果要让编译器输出编译过程中的相关提示信息:

上边的警告是因为没有使用语句引用所致。

链接函数库

C语言可以引入各种附带的标准库,如上边程序中使用的,就是引入的标准I/O库。下面展示在程序中引入其他函数库的示例:

函数库也称为链接库,分为静态和动态,比如Windows上的一般被称作动态链接库。

因为引入的两个库和都是标准库,所以无需通过额外参数进行定位,但如果是第三方库,就可能需要指定库所在的目录和名称了,比如:

其中用于指定函数库名称,比如就是指定引入函数库(和省略),用于指定函数库的检索目录,和是默认的函数库保存目录。

此外,函数库对应的头文件也有默认保存目录,是,如果是使用这个目录下的头文件,是不需要额外指定的,但如果不是,同样需要指定头文件的检索路径:

gcc的简易用法

这里将gcc的简易用法进行总结:

  • 将源码编译为目标文件:
  • 优化编译结果的执行效率:
  • 指定第三方函数库和头文件:
  • 链接函数库并输出可执行文件:
  • 编译时输出提示信息:

其中或这些非必要参数被称作标识(FLAGS),因为这里使用的是C语言,所以也叫做CFLAGS。

make

为什么要使用make

这里使用鸟哥的私房菜中的案例进行说明,先下载并解压示例代码:

编译并测试:

如果我们修改了源码,就要将以上的过程重新来一遍,当然如果使用会更加简单:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年8月11日
下一篇 2021年8月11日

相关推荐