博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux软件安装:源码(1)
阅读量:7068 次
发布时间:2019-06-28

本文共 1488 字,大约阅读时间需要 4 分钟。

在windows上安装软件只要不断点击下一步下一步就行,但是无法修改软件的源代码,如果要增加或者减少软件的某些功能,只能求助于当初发行软件的厂商了。

而linux上面的软件几乎都经过GPL授权的,也就是说每个软件都提供源代码,可以自行修改程序。

何为GPL:GPL,是General Public License的缩写,是一份GNU通用公共授权非正式的中文翻译,保证你共享和修改自由软件的自由。——保证自由软件对所有用户是自由的。

linux上真正识别的可执行文件其实是二进制文件,那么我们如何做出一个二进制的程序呢,首先要写程序,比如vim编写程序,这就是所谓的源代码,就是一般的纯文本文件,在完成这个源文件的编写后,进行编译成os能够识别的二进制程序,而要编译的话自然需要编译程序来操作。

比如使用c语言进行源代码编写,写完后,用linux上标准的c语言编译程序gcc来编译,就可以制作一个二进制文件。

事实上,在编译过程中还会生成所谓的目标文件,拓展名.o结尾,有的时候会在程序中调用其他的外部子程序,这时在编译过程中就必须把函数库加进去,如此,编译程序就可以将us哦呦的程序代码和函数库做一个链接(link)以生成正确的执行文件。

目标文件是指源文件经过编译程序产生的能被cpu直接识别二进制文件。 可执行文件就是将目标文件连接后形成的可执行文件,当然也是二进制的。make configure使用gcc编译的过程并不简单,如果源码很大的话。此时可使用make命令来简化编译命令。make是一个程序,当执行make时,make会在当前目录下搜寻makefile这个文本文件,makefile记录了源码如何编译的详细信息,而makefile如何得到,通过软件开发商都会写一个检测程序来检测用户的操作环境。检测程序完毕后,会新建这个makefile规则文件,通过这个检测程序的文件名叫configure或config那么为什么要检测操作环境呢?虽然每个linux distribution用的是相同的内核,但是内核的调用不同,而且每个软件所需的函数库也不同,同时,软件开发商不仅会针对linux开发,而是会针对整个unix-like做开发因此也必须检测该操作系统是否有合适的编译器,一般来说,检测程序会检测的数据如下:  是否有合适的编译程序可以编译本软件的程序代码。  是否已经存在本软件所需要的函数库或其他需要的相关软件。  操作系统是否适合本软件  内核的头定义文件是否存在也就是说,首先要执行configure来新建makefile,这个步骤很重要,然后用make调用所需要的数据来编译即可。由于不同的linux distribution的函数库文件所放置的位置的路径或者是函数库的文件名都不相同,理论上在centos上编译编译出的二进制文件在ubuntu上无法执行,所以同一套软件要在不同平台上面执行时,必须要重复编译,因此需要源码。软件的安装和升级软件的更新分两大类:直接以源码通过编译来安装和升级直接用编译好的二进制程序来安装和升级tarball文件:一个软件包,压缩文件解压后:源代码文件检测程序文件软件的安装说明(install、readme)tarball安装流程:下载tarball解压缩得到很多源文件用gcc编译生成目标文件用gcc进行函数库,主程序,子程序的链接,形成主要的二进制文件将上述额二进制文件和相关的配置文件安装在自己的主机上。
  

转载于:https://www.cnblogs.com/sichenzhao/p/9320385.html

你可能感兴趣的文章
x265探索与研究(六):main()函数
查看>>
UITableView分页
查看>>
跟我一起数据挖掘(13)——矩阵分解
查看>>
CAShapeLayer(持续更新)
查看>>
JAVA UUID 生成唯一标识
查看>>
spring学习笔记(4)依赖注入详解
查看>>
菜鸟学自动化测试(五)-----selenium命令之定位页面元素
查看>>
【SICP练习】64 练习2.35
查看>>
PSK星座对象(constellation.cc)
查看>>
Linux链接脚本学习--lds
查看>>
Android将list数据通过LitePal保存到本地(集合保存到本地)
查看>>
hdu 1285 确定比赛名次
查看>>
Eureka微服务实战-服务提供者
查看>>
简单的原生ajax
查看>>
h5开发坑点小总结
查看>>
几分钟内提升技能的8个 JavaScript 方法!
查看>>
mac显示隐藏文件
查看>>
Android 插件化原理-好文收集(陆续中。。。)
查看>>
双亲委派模型与Tomcat类加载架构
查看>>
Highcharts tooltip显示数量和百分比
查看>>