Unix/Linux 软件安装
首先我们明白,在Unix like的机器上,一套软件并不仅仅有一个程序,而是一堆程序代码文件。
例如main.c,haha.c,sin_value.c这三个源代码文件。
1.程序源码
1.1用gcc等编译工具手动编译
#什么是gcc工具?GNU的gcc工具是很通用的C语言编译器。
gcc -c main.c
gcc -c haha.c
gcc -c sin_value.c
gcc -c cos_value.c
生成main.o,haha.o,sin_value.o,cos_value.o 4个经过编译文件。
将几个.o文件进行连接,并加入libm数学函数,以生成main可执行文件。
gcc -o main main.o haha.o sin_value.o cos_value.o \
-lm -L/usr/lib -L/lib
#然后我们就可以跑main这个可执行文件了。
[padep@cnsz081003 fwy]$ ./main
Please input your name: fengweiyuan
Please enter the degree angle (ex> 90): 110
Hi, Dear fengweiyuan, nice to meet you.
The Sin is: 0.94
The Cos is: -0.34
1.2 用configure与make等工具编译源码
./configure
检测用户环境,检查该OS是否适合等。然后会生成makefile文本文件。
1.是否有适合的编译程序,可以编译本软件的程序源码。
2.是否已经存在本软件所需的函数库或其他依赖软件。
3.OS平台,包括内核版本,是否适合本软件。
4.内核的头定义文件是否存在。
makefile当中记录了源码如何编译等信息。这个步骤的相关信息你可以参考README与INSTALL等文件。
makeclean
不一定需要,但执行一下比较安全。如果已经有上次编译过的.o文件存在,当然是清除一下比较好,这样我们就可确定新编译出来的执行文件我们可以确定是使用自己的机器所编译完成的。
make
会在当前目录下搜索makefile这个文本文件,利用makefile来编译源码,编译成可执行文件,放当前目录下。(这个过程就如上面1.1的生成.o文件,将.o文件连接一起并加函数库的工作)。
make会自动判断源码是否经过变动了而自动更新执行文件。
make install
如果makefile里面有写上关于install的选项,就会将上一步编译完成的文件安装到默认的目录下,以完成安装。
这些步骤是一个一个来的,前面的没有成功,后面的也无法执行。
总结
由于不同OS的函数库路径、或者函数库文件名定义,或者是默认安装的编译程序,以及内核版本不同。理论上,不能将CentOS 5.x上编译出来的二进制文件(二进制执行文件包含该OS上函数库路径信息),拿到SuSE上执行。所以同一套软件要在不同的平台上执行,必须要重复编译,因此才需要源码。
2.已经编译好的文件
2.1二进制分发版
直接选择编译好的二进制分发版,需要从网站上按照操作系统版本来选择。其实就使在特定操作系统上,已经编译好的二进制文件,我们直接拷贝使用。
2.2rpm包
要安装的软件,预先编译了,然后打包成rpm安装包。包头会有软件依赖信息,安装rpm包前,rpm会先依照rpm包头记录的信息,去检查环境是否满足,若不满足就不安装。安装的时候,会将该软件的信息,写入本地RPM数据库,以便未来的查询、验证与反安装。
所以,rpm包并不是跨平台的,要安装这个rpm包,那么这个平台要与当初建立这个软件文件的主机环境一致或相当才行。
srpm包。**.src.rpm
Unix/Linux 软件安装,古老的榕树,5-wow.com