Linux学习之软件包的源码安装

时间:2022-06-02 17:11:44

一、软件包开发及安装简介

无论是linux系统还是windows系统,它们的大多数程序都是使用静态语言开发的。C/C++还是运行在虚拟机中的JAVA/Python等等,但我们更常见的程序都是用CC++来研发的。静态语言开发的程序必须要完成编译之后才能运行,而且为了便于静态语言的开发,操作系统都提供了相应的系统调用,而这些调用被封装成了相应的库文件。库文件有动态库和静态库之分,但是大多数的库文件都是被动态链接和调用的。库本身有可能包含有多个系统调用,也可能一个也没有。根据操作系统类型的不同,他们所提供的系统调用也不同,所以在系统调用的基础上封装出来的库文件也不一定相同。

    但是程序员在程序开发的过程中为了提高效率,只要系统提供有库,他们都会直接的进行调用。这样当程序运行的时候,都会依赖于自身操作系统提供的库文件。为了解决这个问题,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

Linux学习之软件包的源码安装

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... 在其中未发现错误信息时,说明我们的执行操作是成功的。继续查看该目录下的文件如下:

Linux学习之软件包的源码安装

其中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已经成功了。

Linux学习之软件包的源码安装

通过上面的讲述,我相信大家对源码安装的过程有了较为详细的了解。


这就是笔者对与源码包安装的理解,希望能给给大家带来帮助,有什么问题,欢迎大家提问。需要注明的事,本次安装过程笔者实在RHEL6.4上实现的。




本文出自 “Haris” 博客,请务必保留此出处http://harisxiong.blog.51cto.com/7513022/1259180