Linux学习日记17-Linux 下源代码与Tarball套件管理
时间:2007-04-12 来源:junzero
1. 前言
2. 一个简单的范例
3. make的简易用法
4. Tarball的管理和建议
5. 函数库管理
6. 检验软件正确性
7. 本章重点
声明:所有截图和兰色字体的内容来自《鸟哥的Linux私房菜》。
一、前言
通常在自己开发程序,或者应用程序升级,系统升级,新应用程序安装的时候都会涉及到源代码。
1.什么是源码,编译器,可执行文件?
源码其实就是一些文本文件,只不过这里面的语言组织是有一定的格式与规定的。
编译器,用来将源码编译成可执行的文件,他会根据一定的格式去做的!
可执行文件:一般的shell脚本是文本方式的,可是最后由shell解释后都是调用binary 程序执行的;编译后生成的文件都是binary 方式的可执行文件。系统真正执行的都是二进制的可执行文件。
2.什么是函数库?
故名思议,它就是一个库,可以提供函数相关功能的库。它的好处是:在要实现某个功能的时候,恰好这时候有个库中提供相应功能的函数,那么这时候我们只要去调用这个库里面的函数,在连接的时候加上这个库就好了,不需要写重复的代码。
下面是图示:
3.什么是make和configure?
make是一个程序,是一个会去找Makefile文件的程序(也可以自己指定makefile文件的),Makefile文件则是用来记录源代码如何编译的详细信息。make还会自动判断哪些源代码被修改过了,要重新编译。
configure用来侦测使用者的工作环境,然后生成Makefile文件。
4.什么是Tarball套件?
它是一个将源代码打包并压缩后的东西。可以是利用tar与gzip完成的*.tgz文件,它通常包含:
• 原始程序代码档案;
• 侦测程序档案( 可能是 configure 或 config 等档名 );
• 本套件的简易说明与安装说明( INSTALL 或 README )。
5.如何安装与升级套件?
安装和升级有下面两种方式:
• 直接以原始码透过编译来安装与升级;
• 直接以编译好的 binary file 来安装与升级。
第二种的方式很直接简单,但是往往这种东西并不是每个平台都合适。
第一种就是相对于第一种稍微复杂一点,而且如果是很大的程序,这种方式往往会很痛苦,但是这种方式几乎没有平台限制。
第一种的安装流程:
1. 将 Tarball 由厂商的网页下载下来;
2. 将 Tarball 解开,产生很多的原始码档案;
3. 开始以 gcc 进行原始码的编译( 会产生目标文件 object files );
4. 然后以 gcc 进行函式库、主、子程序的连结,以形成主要的 binary file;
5. 将上述的 binary file 以及相关的设定文件安装至自己的主机上面。
其中的3、4步可以通过configure加make来做以简化步骤,不过整个这种方式都需要系统中要有开发环境才行。
二、一个简单的范例
几乎所有编程开始的第一步都是跟Hello World有关,因为前辈都会用实现输出Hello World来指导后辈开始第一步。
1.输出 Hello World
先编写源代码,并保存,然后用gcc编译。执行生成的可执行文件。
上面生成的是默认的输出文件,当然我们还可以指定生成什么文件。
2.子程序的编译
存在多个程序,主程序要调用子程序中的函数,要怎样编译?例子如下:
3.加入链接的函数库
有些时候我们要在程序中调用一些库函数的,例子如下:
对这个程序,如果要是直接编译的话,结果如下:
这里面用到的sin是包含在数学库libm.so中,所以要链接这个库:
如果程序中所引用的头文件在默认的inlude文件夹中不能找到,而要另外指定,那么我们就要明确的指定头文件所在的文件夹。
4.gcc的用法
参考下图:
三、make