您的位置:首页 > 运维架构 > Linux

【系统知识点】linux软件安装编译

2016-12-15 15:15 204 查看
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为检测程序,检测的数据如下:是否有适合的编译程序可以编译本软件的程序代码,是否已经存在本软件所需要的函数库或其他需要的相关软件,操作系统的平台是否适合本软件(包含内核版本),内核的头定义文件是否存在(驱动程序必须要的检测),检测完毕后生产makefileMake 找到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与README3.相关属性软件安装:说明书会说明4.建立makefile:./configure 可附带些参数,自定义安装,具体--help建议至少定义安装目录:--prefix XXXX目录,方便以后卸载此软件程序5.编译:以make自动编译,make就是实际就是操作gcc去编译的,只是汇合在make上,简化编译流程6.安装:make install7.清理编译目标文件等垃圾:make clean 更新:一.重新下载源码编译安装覆盖二.通过patch更新源码,然后再编译安装覆盖到对应源码的文件下面--查阅pathc file内容,对比文件的路径,定义好X为几--更新源码并且重新编译程序Patch -pX <
XXX.patch //X代表抛弃pathc file所记录的路径的前几层路径,如果直接就是当前目录直接patch的话,就全部抛掉PS:如果很旧很旧的版本的话,就要按更新顺序一个个来。 删除:1.如果源代码包有提供make
uninstall就直接去源代码包make uninstall2.如果没有提供,那么直接到你定义好的路径,把整个文件夹删除即可!这就是自定义安装的好处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…,日常运维中,也可常使用,但是源码编译会更加随心所欲,因此建议大家还是要学会。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  系统知识点