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进行处理,非常感谢!