当执行make时,make会在当前的目录下搜寻Makefile(or makefile) 这个文本文件,而 Makefile里面则记录了原始码如何编译的详绅信息! make 会自动地判别原始码是否经过变动了,而自动更新执行档
通常软件开发商都会写一支侦测程序来侦测用户的作业环境, 以及该作业环境是否有软件开发商所需要的其他功能,该侦测程序侦测完毕后,就会自动地建立这个 Makefile 的规则档案!通常这支侦测程序的文件名为 configure或者是config
侦测程序会侦测的数据大约有底下这些:
- 是否有适合的编译程序可以编译本软件的程序代码;
- 是否已经存在本软件所需要的凼式库,或其他需要的相依软件;
- 操作系统平台是否适合本软件,包括 Linux 的核心版本;
- 核心的表头定义档 (header include) 是否存在 (驱动程序必须要的侦测)。
![](https://img-my.csdn.net/uploads/201304/20/1366425452_1491.png)
Tarball 档案:将软件的所有原始码档案先以 tar 打包,然后再以压缩技术来压缩,, Tarball 是一个软
件包, 妳将他解压缩之后,里面的档案通常就会有:
- 源代码档案;
- 侦测程序档案 (可能是 configure 戒 config 等檔名);
- 本软件的简易说明与安装说明 (INSTALL或README)。
其中最重要的是那个INSTALL或者是README这两个档案。
那么一个软件的Tarball是如何安装的呢?基本流程是这样的:
1. 将Tarball由厂商的网页下载下来;
2. 将Tarball解开,产生很多的原始码档案;
3. 开始以gcc进行原始码的编译(会产生目标文件 object files);
4. 然后以gcc进行凼式库、主、子程序的链接,以形成主要的 binary file;
5. 将上述的 binary file 以及相关的配置文件安装至自己的主机上面。
上面第 3, 4 步骤当中,我们可以透过 make 这个指令的功能来简化它
使用传统程序语言进行编译的简单范例
1.写源代码
2.编译执行
主、子程序链接:子程序的编译
在linux下还是多多尝试一下gcc的各种用法,这样才能够大致知道命令执行了什么操作:
可以使用以下命令:
gcc thanks_2.c thanks.c
直接产生a.out文件,可以用./a.out执行
呼叫外部凼式库:加入连结的凼式库
C 语言里面的 sin 函数是写在libm.so这个函数库中
智源软件原创