首页 > 代码库 > 【系统知识点】linux软件安装编译
【系统知识点】linux软件安装编译
Linux上面的软件几乎都是经过GPL的授权,所以每个软件几乎均提供源代码,并且你可以自行修改该程序代码,以符合你个人需求。
基础知识:
可执行文件:
在Linux系统上面一个文件能不能被执行看的是有没有可执行的那个权限,不过真正识别的可执行文件其实二进制文件,如/usr/bin/passwd,/bin/touch
注意:shell script并不是可执行文件,它只是利用shell这个程序的功能进行一些判断式,而最终执行的除了bash提供的功能外,依然调用一些已经编译好的二进制程序来执行。
通过file命令可以查看其是否可执行文件。
程序生成过程:开放源码---编译程序---可执行文件
函数库:
函数库分静态(.a)和动态函数库(.so),程序执行过程会调用,以产生最终执行结果,类似于子程序
动态函数库不依附在源程序中,所以方便更新升级,因此大多软件调用动态函数库
函数库的管理:
Ldconfig 把常用的动态函数库加载到内存中,加快速度
/etc/ld.so.conf写入要加载的函数库的目录---执行ldconfig---同时也将记录一份在/etc/ld.so.cache中
Ldd--动态函数库解析,查看程序含有的动态函数库有哪些以及相关函数库之间的相关性
make与configure:
configure为检测程序,检测的数据如下:是否有适合的编译程序可以编译本软件的程序代码,是否已经存在本软件所需要的函数库或其他需要的相关软件,操作系统的平台是否适合本软件(包含内核版本),内核的头定义文件是否存在(驱动程序必须要的检测),检测完毕后生产makefile
Make 找到makefile,makefile记录了源码如何编译的详细信息,make会自动判别源码是否经过改动了而自动更新执行文件,然后编译!
Tarball软件--.tar.gz/.tgz
包含源代码文件,检测程序文件,安装说明
软件的基础安装法(gcc):
下载Tarball软件包,解压
gcc编译:
gcc -o 指定名称 源码
gcc -c 1 2 //连接12主子程序进行编译
gcc -O //优化编译
gcc -Wall //产生详细的编译过程信息
gcc -lm -L/lib -L/usr/lib //使用libm.so库,请到上述路径上面找
gcc -lm -I/usr/include //去指定路径搜索相关include文件
编译完成后执行安装即可
日常软件管理操作:
安装:
1.取得源文件,放到/usr/local/src目录下面解压缩
2.取得步骤流程:查看安装说明书INSTALL与README
3.相关属性软件安装:说明书会说明
4.建立makefile:./configure 可附带些参数,自定义安装,具体--help
建议至少定义安装目录:--prefix XXXX目录,方便以后卸载此软件程序
5.编译:以make自动编译,make就是实际就是操作gcc去编译的,只是汇合在make上,简化编译流程
6.安装:make install
7.清理编译目标文件等垃圾:make clean
更新:
一.重新下载源码编译安装覆盖
二.通过patch更新源码,然后再编译安装覆盖
到对应源码的文件下面--查阅pathc file内容,对比文件的路径,定义好X为几--更新源码并且重新编译程序
Patch -pX < XXX.patch //X代表抛弃pathc file所记录的路径的前几层路径,如果直接就是当前目录直接patch的话,就全部抛掉
PS:如果很旧很旧的版本的话,就要按更新顺序一个个来。
删除:
1.如果源代码包有提供make uninstall就直接去源代码包make uninstall
2.如果没有提供,那么直接到你定义好的路径,把整个文件夹删除即可!这就是自定义安装的好处
3.如果当初安装没定义好的话,那么就比较麻烦了,可以通过一些第三方软件去进行彻底删除,或者明确知道它动了哪里(查查软件说明书==)的话,就删除哪里就好了
对于Tarball软件管理:
1.规范好,源码放在/usr/local/src下,安装在/usr/local下(但具体程序的操作就要把安装路径放入$PATH去,才能在全局自己使用,不需要绝对路径),方便以后管理
2.为安装到单独目录的软件的man page 加入man path
如:将安装的软件放置到/usr/local/sofeware中,那么在man page搜索的设置中就在/etc/man.config内的40-50行左右写入如下的一行:
MANPATH/usrlocal/sofeware/man
这样才可以使用man来查询该软件的在线文件
检验软件的正确性:
md5sum/sha1sum XXXX 把结果与官网的指纹编码对比即可
当然现在对于软件的管理,已经有对应的包管理软件去进行,更加方便,比如RPM,YUM…,日常运维中,也可常使用,但是源码编译会更加随心所欲,因此建议大家还是要学会。
本文出自 “走在产品路上的运维dog~” 博客,转载请与作者联系!
【系统知识点】linux软件安装编译