- 论坛徽章:
- 0
|
源码与Tarball套件管理程序
昨天腾讯公司终于发行了可以在LINUX系统运行的QQ程序,很多使用LINUX的新手会很想也在自己的LINUX系统上装上一个QQ,我也不例外,不过在安装的过程中遇到很多问题,但也学会了识知,所以此记录一些在LINUX系统下安装程序的最原始的方法。
要在LINUX系统中自行安装程式套件,首先必需要了解程序编译概念.
一.可执行文件、源码、目标文件、函数库、编译器
在LINUX系统上,一个文件能不能执行不是看后缀名,而是看有没有文件有没有执行权限(x权限),不过,除了有执行权限外文件还必需是二进制文件,如/usr/bin/passwd这些文件。可用file命令来测试可是不是二进制文件,源码通过编译器编译就会生成可执行的二进制文件。
源码:可以自己用编程语言编写也可以上网去下载,源码文件一般为*.c格式,上网下载的源码一般为*.tar.gz格式要用tar命令解压
目标文件:编译过程中,还会产生目标文件,这些文件的扩展名为*.o。目标代码是指源代码经过编译程序产生的能被cpu直接识别二进制代码,连接程序将目标文件与系统函数库连接就生成可执行文件。
函数库:分为动态和静态,有时候如果源码中引用调用了其他的外部子程度或者函数库,这个时候就要在编译过程中,将函数库加入进去或做一个链接,以产生正确的执行文件。Linux的核心提供很多核心相关的函数库,在设计硬件驱动时是相当有用的。这些函数库一般放在/lib,/usr/lib,/usr/include上。
编译器:通常linux下使用的是gcc
二.什么是make与configure
使用gcc编译过程并不简单,make命令就是用来简化编译过程的
当执行make命令时,make就会搜索当前目录下的makefile文件,makefiel文件记录了源码如何编译的详细信息。还会自动识别源动是不是有改动过,自动更新。
那么makefile怎么写呢,通常软件开发商都会写一个检测程序,检测用户系统环境,完了就会自动生成一个makefile文件。通常这个检测程序的名字为configure或是config。
三.什么是tarball套件
纯文件的源码,其实是很浪费硬盘空间的,同时除了源码还要有configure,install,readme等文档,为了方便在网络传播,我们将这些文件打包并压缩来进行传输,这就是tarball文件来由来。
Tarball文件,其实是将套件的所有源码文件和其它文档先打包,然后再压缩,最后生成类似*.tar.gz扩展名类型的文件。所以Tarball套件一般包括:
1.源码文件
2.检测程序文件
3.本套件的简单说明与安装说明
注意:要进行安装,tar make gcc函数库是必不可少的.没有的话请自行在系统中安装上.
一个tarball套件的基本安装流程:
由网上download tarball套件
将tarball套件解开
运行检测程序./configure,成生makefile,这步很重要,可以设置安装目录
运行make命令,编译与安装
四.一个简单的范例
显示I LOVE U的程序
1. 先编辑源码 vi test.c
2. 编译 gcc test.c 没有带参数时,会自动成生一个a.out文件.
3. 执行./a.out
也可以这样:
1. 使用参数c gcc –c test.c 会生成一个test.o的目标文件
2. Gcc –o test test.o
3. ./test
为什么要这样呢,第一我要自己命名执行文件,第二,当源码中有调用一个子程序时(不明问我).
如果想要程序在执行时具有比较好的性能,或其它除错功能,可以在编译的过程中加入适当的参数,gcc -O, -wall –c test.c
当源码中涉及到一些函数时,必须要在编译时指定调用的函数库路径,
比如,sin.c源文件,调用了libm.so函数库的函数
可用这个命令gcc sin.c –lm –L/lib –L/urs/lib
注意:-l表示加入某个函数库
m 表示libm.so或libm.a 函数库
-L表示函数库所在路径
Linux默认是将函数放在/lib和/urs/lib中的,所以不写–L/lib –L/urs/lib也行,不过如果所调用的函数不在这两个目录上就要特别指出
除了连接的函数库之外,*.h文件是默认放在/usr/include中,如果放在其它地方要用-I/path说明。
使用gcc
gcc –c test.c gcc –o test test.o gcc –O –c test.c
gcc –c sin.c –lm –L/usr/lib –L/lib –I/usr/include
使用make
使用make之前要先用vi makefile来看看makefile的内容再用make 命令
要明白makefile文档的内容就必需了解makefile 规则,这里就不详说了
五.Tarball的管理与建议
1. 将tarball文件在/usr/local/src目录下解压缩;
2. 进入新建的目录,查看INSTALL与README文件的内容
3. 以自动检测程序(configure或config)检测系统工作环境,并建立makefile文件
4. 使用make以及该目录下的makefile作为参数设置文件,来进行make
5. 使用make以及目录下makefile参数设置文件,根据install目标的指定安装到正确的路径。
当makefile在创建出来之后,里面会有相当多的目标(target),最常见的就是install与clean。通常“make clean”表示将目标文件清除掉,“make”是将源码进行编译。注意,编译完成的可执行文件与相关的设置文件还在源码所在的目录中,因些,最后要进行“make install”将编译完成的所有内容都安装到正确的路径中。
./configure make clean make make install命令执行方式
Linux版本默认安装软件的路径是什么呢?我以apache为例:
/etc/httpd
/usr/lib/
/usr/bin/
/usr/share/man
那么以tarball来安装时,安装的文件一般放在/usr/local/
/usr/local/etc
/usr/local/bin
/usr/local/lib
/usr/local/man
这样的话每个套件都选择在这个默认的路径下安装,所以的文件都将放在这4个目录中,想升级或删除时就会很麻烦。所以建议这样安排:
/usr/local/apache/etc
/usr/local/apache/bin
/usr/local/apache/lib
/usr/local/apache/man
删除apache目录就可以看作是把这个软件给删了,不过实际上还是要看makefile中INSTALL信息才能知道到底有没有完全删除这个软件。安装完后,还要注意两个问题:第一就是运行apache软件要输入绝对路径,第二就是要在man.config文件中的man page搜索路径中加入/usr/local/apache/man。
![]()
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/85021/showart_1404299.html |
|