一、软件包开发及安装简介
无论是linux系统还是windows系统,它们的大多数程序都是使用静态语言开发的。C/C++还是运行在虚拟机中的JAVA/Python等等,但我们更常见的程序都是用C、C++来研发的。静态语言开发的程序必须要完成编译之后才能运行,而且为了便于静态语言的开发,操作系统都提供了相应的系统调用,而这些调用被封装成了相应的库文件。库文件有动态库和静态库之分,但是大多数的库文件都是被动态链接和调用的。库本身有可能包含有多个系统调用,也可能一个也没有。根据操作系统类型的不同,他们所提供的系统调用也不同,所以在系统调用的基础上封装出来的库文件也不一定相同。
但是程序员在程序开发的过程中为了提高效率,只要系统提供有库,他们都会直接的进行调用。这样当程序运行的时候,都会依赖于自身操作系统提供的库文件。为了解决这个问题,POSIX规范的概念被提了出来。只要在程序开发的过程中,遵循POSIX规范,我们在windows下开发的程序拿到linux下进行编译同样也可以使用。所以,这样就解决了跨平台编译的问题了。但是如果想将他们编译好的二进制程序跨平台运行,这是不可能实现的,因为不同的操作系统,提供不同的ABI(应用二进制接口)。编译好的程序需要基于它们来运行。所以,要想在linux下面运行相应的程序,就需要基于linux系统来进行编译安装,或者利用别人在linux系统上编译好的软件包直接安装。我们把前一种方法称为linux的源码安装,而后一种则称为rpm包安装。笔者将以apache的源码安装为例详细介绍源码安装的过程。
二、软件包的相关组成
基本的软件包主要由以下4个部分组成:
1.二进制程序:在linux中二进制程序主要安装在/bin和/sbin目录下来提供主程序功能。
2.库文件:主要存放在/lib相关的目录下,大部分以.a和.so结尾的文件。
3.配置文件:主要存放在/etc目录下,用以实现程序相关配置参数的设置和修改。
4.帮助文档:这是程序开发者提供的。主要存放在/usr/share/man/目录下。定义man文档的使用帮助。
三、LINUX程序源码安装
了解linux的同学都知道,源码安装是比较复杂的一种软件包的安装方式。它需要用户直接在linux主机进行编译安装。在这里我以apache-2.2.25.tar.bz2源码包的安装为例进行讲解,主要步骤如下:
1.将tar.bz2打包压缩的文件解压到当前目录并cd进去查看解压出来的文件:
# tar xf httpd-2.2.25.tar.bz2
2.检查编译环境并定制相关的编译配置。使用 ./configure --help 查看相关的选项。
本次实验中我就简单的使用如下选项进行程序的编译配置:
--prefix=/usr/local/apache |
设置程序安装的主目录 |
--enable-rewrite |
启用重写功能 |
--enable-so |
让apache核心装载DSO |
运行命令如下:
#./configure--prefix=/usr/local/apache --enable-rewrite --enable-so
当我们执行之后,我们会发现在屏幕上输出一系列的 checking、creating、config... 在其中未发现错误信息时,说明我们的执行操作是成功的。继续查看该目录下的文件如下:
其中config.log记录了检查的的信息,而Makefile是生成的文件。用于我们的编译过程。
提示:在执行命令之前我们一定要确认我们的系统安装好了开发环境,否则在执行该操作的时候会提示安装相应的开发文件。我们可以通过yum仓库来进行安装。因为我们在这里只是使用该程序进行源码安装测试,所以只简单列举一些用法。关于apache详细的使用和参数配置我将在后续的博文中陆续更新。以为开发环境安装过程:RHEL5和RHEL6有所不同,如下所示:
RHEL6: # yum groupinstall "Development tools" "Server Platform Development" "Desktop Platform Development" -yRHEL5:# yum groupinstall "Development tools" "Development Libraries" -y
3.使用make 命令进行编译
#make
4.编译完成之后使用 make install 进行安装
#make install
5.编译安装完成之后,我们就可以对其进行相关参数的修改(系统并不会帮助我们实现)。
主要有以下4项:
1.修改PATH环境变量以方便在当前路径下直接使用命令。
[root@station112 ~]# vim /etc/profile.d/apache.sh #添加该文件 export PATH=/usr/local/apache/bin:$PATH[root@station112 ~]# source /etc/profile #重新加载文件
2.导出库文件的搜索路径并完成库文件的重新搜索。
[root@station112 ~]# vim /etc/ld.so.conf.d/apache.conf #添加该文件 /usr/local/apache/lib[root@station112 ~]# ldconfig -v | grep /usr/local/apache/lib /usr/local/apache/lib: #搜索结果
3.实现帮助文档,以便于man帮助的直接使用。
[root@station112 ~]# vim /etc/man.config #在该文件中添加如下一行 MANPATH /usr/local/apache/man[root@station112 ~]# man -M /usr/local/apache/man httpd #可以直接查看
4.头文件的处理
[root@station112 ~]# ln -sv /usr/local/apache/include /usr/include/httpd
6.测试:完成上面的设置后,我们就可以直接启动我们的apache服务器了。
通过上面的结果我们可以确定源码安装apache已经成功了。
通过上面的讲述,我相信大家对源码安装的过程有了较为详细的了解。
这就是笔者对与源码包安装的理解,希望能给给大家带来帮助,有什么问题,欢迎大家提问。需要注明的事,本次安装过程笔者实在RHEL6.4上实现的。
本文出自 “Haris” 博客,请务必保留此出处http://harisxiong.blog.51cto.com/7513022/1259180