一 开放源码的软件安装和升级简介
1 Linux上面的软件几乎都是经过GPL的授权,所以每个软件几乎均提供源代码,并且你可以自行修改程序代码
2 在Linux系统上面,一个文件能不能被执行看的是有没有可执行的那个权限(具有x权限),不过Linux上面真正识别的可执行文件其实是二进制文件,例如/usr/bin/passwd
3 程序代码文件其实就是一个一般的纯文本文件,在完成这个源码文件的编写之后,再来就是要将这个文件“编译”成为操作系统看的懂的二进制文件,而要编译自然要写“编译程序”来操作,经过编译程序的编译与链接之后,就会生成一个可以执行的二进制程序
4 总之,我们可以这么说
开放源码:就是程序代码,写给人类看的程序语言,但机器不认识,所以无法执行
编译程序:将程序代码转译成为机器看得懂的语言,就类似翻编者的角色
可执行文件:经过编译程序变成二进制程序之后机器看得懂的所以可以执行的文件
5 函数库类似子程序的角色,可以被调用来执行的一段功能函数。分为静态函数库和动态函数库
6 有的时候有一堆的程序代码文件,我们需要去手动编译,但是很多编译命令让我们写到疯掉,这个时候我们可以利用make这个命令的相关功能来进行编译过程的命令简化
7 当执行make 的时候,make会在当前的目录下搜索Makefile这个文本文件,而Makefile里面则记录了源码如何编译的详细信息,make会自动判别源码是否经过变动而自动更新执行文件
8 makefile是怎么产生的呢?一般我们在当前的目前下会有一个configure,这个configure检测程序可以找到所需函数库,编译器及其他资料
9 所谓的Tarball文件,其实就是将软件的所有源码文件先以tar打包,然后再以压缩技术来压缩,通常最常见的就是gzip来压缩了,因为利用了tar和gzip的功能,所以tarball的文件一般的扩展名为*.tar.gz或者是*.tgz
10 一个软件的tarball是如何安装的呢,基本流程是这样的
1 将tarball由厂商的网页下载下来
2 将tarball解压缩,生成很多的源码文件
3 开始以gcc进行源码的编译(会生成目标文件)
4 然后以gcc进行函数库,主程序,子程序的链接,以形成主要的二进制文件
5 将上面的二进制文件以及相关的文件配置安装到自己的主机上面
二 使用传统程序语言进行编译的简单范例
1 在默认的情况下,如果我们直接以gcc编译源码,并且没有加上任何参数,则执行文件的文件名会被自动的设置为a.out这个文件名
2 gcc的简易用法
1 gcc -c tmp.c
-c参数是仅将源码编译成为目标文件,并不制作链接等功能
会生成tmp.o这个文件,但是并不会生成可执行文件
2 gcc -o tmp.c -c
-o参数在编译的时候,依据操作环境给予优化速度
会自动的生成tmp.o这个文件,并且进行优化
3 gcc tmp.c -lm
-lm指的是libm.so或libm.a这个函数库文件
4 gcc -o main tmp.c -wall
-o tmp指定生成的可执行文件为main
-wall 会把详细的信息列出
三 Tarball的管理与建议
1 Tarball安装的基础操作大多是以下流程:
1 取得源文件:将tarball文件在/usr/local/src目录下解压缩
2 取得步骤流程:进行新建立的目录下面,去查阅INSTALL与README等相关文件内容
3 相关属性软件安装:根据INSTALL/README的内容查看并安装好一些相关的软件
4 建立makefile:以自动检测程序configure检测操作环境,并建立Makefile这个文件
5 编译:以make这个程序并使用该目录下的Makefile作为它的参数配置文件,来进行编译的操作
6 安装:以make这个程序,并以Makefile这个参数配置文件,以及install这个目标的指定来安装到正确的路径
2 所谓的更新源码只是更新少部分,很多的软件开发商在更新了源码之后,都会发布所谓的patch file
3 我们只要下载了patch file就能够对你的软件源码更新了,只不过更新了源码并非软件就更新,我们还需要将该软件进行编译後才会是最终的正确的软件,因为patch的功能主要是更新源码而已
4 我们可以使用MD5这个指纹验证机制来判断该文件有没有被改动过