第22章 软件安装:原始码与 Tarball
测试一个文件是不是可执行二进制文件,可以用 “file 文件路径” 来测试
make和configure
make是一支程序,执行它时,make会在当时的目录下搜寻Makefile(or makefile)文本文件,判别原始码是否变动过,然后自动更新执行文件。
configure(or config)是用来侦测用户的作业环境、是否有所需功能等的一个程序。
Tarball软件
将软件的所有原始码文件先以tar打包,然后再以压缩技术来压缩。
编译程序:
才知道vim就是这么直接调用来使用的啊……黑乎乎的
编译与测试程序:gcc 程序名(这种情况下执行文件的文件名会自动设定为a.out)
|| 程序名 a.out
或者 gcc -c 程序名
|| 程序名(无后缀)*
调用外部函数库
编译时加入额外函数库的方式:
-lm意义重大:其中"-l" 是“加入某个函数库”的意思,"m" 则是 libm.so 这个函数库
gcc的简易用法(编译、参数与链接)
----------------------------------------------------------------------------------------------------------
用make进行宏编译
make的优点:1.简化编译时需要下达的指令,2.若在编译完成之后,修改了某个原始码文件,则make仅会针对被修改了的文件进行编译,其他的object file不会被改动,3.最后可以按照相依性来更新执行文件。
make的基本语法规则
makefile里面的数据可以用变量来写比较简单,规则是:
1.变量与变量内容以“=”隔开,同时两边可以具有空格;
2.变量左边不可以有
3.变量与变量内容在“=”两边不能具有“:”
4.在习惯上,变量名称最好是大写字母
5.运用变量时,以$(变量)或${变量}使用;
6.在该shell的环境变量是可以被套用的
7.在指令列模式也可以给予变量
环境变量取用的规则如下:
1.make指令列后面所加的环境变量优先;
2.makefile里面指定的第二
3.shell原本具有的环境变量第三
此外,有一个特殊变量 $@ 代表目前的标的(target)
-------------------------------------------------------------------------------------------------------
Tarball的管理与建议
Tarball的安装步骤
1.取得原始文件:将tarball文件在/usr/local/src目录下解压缩;
2.取得步骤流程:进入新建目录底下,查阅相关文件;
3.相依属性软件安装:(非必要)
4.建立makefile:以自动侦测程序(configure或config)侦测作业环境,建立makefile文件
5.编译:用make程序并使用该目录下的makefile作为参数配置文件
6.安装
利用patch更新原始码
1.测试旧版程序的功能
2.查阅patch file内容
3.更新原始码,并且重新编译程序,使用 patch -p1 < 文件名
-------------------------------------------------------------------------------------------------------
链接库管理
静态链接库:1.扩展名为.a;2.编译行为(文件比较大);3.独立执行;4.升级比较麻烦
动态链接库:1.扩展名为.so;2.编译行为(文件小);3.不能独立执行;4.升级方便
ldconfig与 /etc/ld.so.conf
为了加快动态链接库的读取速度,需要将它加载到高速缓存中,方法如下:
1.必须要在/etc/ld.so.conf 里面写下“想要读入高速缓存当中的动态链接库所在的目录”,记住是目录
2.利用 ldconfig 将 /etc/ld.so.conf 中的资料读入快取中
3.同时也记录一份在/etc/ld.so.cache这个文件中
此外,ldconfig还可以用来判断动态链接库的链接信息。
程序的动态链接库解析:ldd
---------------------------------------------------------------------------------------------
检验软件正确性
文件指纹验证啊
md5num / shalsum
用来检验一个文件的指纹码
Linux底下必须要建立指纹数据库的文件有:
/etc/passwd; /etc/shadow /etc/group /usr/bin/passwd /sbin/portmap /bin/login /bin/ls /bin/ps /usr/bin/top