Linux源码包安装详解

安装源码包

安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。

源码包的编译用到了linux系统里的编译器,常见的源码包一般都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件。所以如果你的机器上没有安装gcc就没有办法去编译源码。你可以使用 yum install -y gcc 来完成安装。

安装一个源码包,通常需要三个步骤: 
1)./configure

在这一步可以定制功能,加上相应的选项即可,具有有什么选项可以通过./configure --help 命令来查看。在这一步会自动检测你的linux系统与相关的套件是否有编译该源码包时需要的库,因为一旦缺少某个库就不能完成编译。只有检测通过后才会生成一个 Makefile 文件。 
--prefix=/PATH : 指定默认安装位置, 默认为/usr/local/ 
--sysconfdir=/PATH :配置文件安装位置

2) make

使用这个命令会根据Makefile文件中预设的参数进行编译,这一步其实就是gcc在工作了。

3) make install

安装步骤,生成相关的软件存放目录和配置文件的过程。 
上面介绍的3步并不是所有的源码包软件都一样的,安装步骤并不是这样,也就是说源码包的安装并非具有一定的标准安装步骤。这就需要你拿到源码包解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名。所以,你一定要去看一下。

实战安装一个源码包

1、获取源码包

下载源码包一定要去官方站点去下载,不要在网上随便下载,那样很不安全。因为你下载到的源码包很有可能是被人修改过的。

2、解压源码包

[root@localhost ]# tar jxvf httpd-2.2.29.tar.bz2
[root@localhost ~]# cd httpd-2.2.29

3、配置相关的选项,并生成Makefile

[root@localhost httpd-2.2.29]# ./configure --help |less

./configure –help 命令查看可以使用的选项。一般常用的有 –prefix=PREFIX 这个选项的意思是定义软件包安装到哪里。通常源码包都是安装在/usr/local/目录下的。比如,我们把apache安装在/usr/local/apache2下,那么这里就应该这样写 –prefix=/usr/local/apache2 其他还有好多选项,如果你有耐心可以挨个去看一看都有什么作用。

[root@localhost httpd-2.2.29]# ./configure --prefix=/usr/local/apache2
[root@localhost httpd-2.2.29]# echo $?
0

返回值如果是 “0” 则执行成功,否则就是没有成功。此时就成功生成 Makefile 了。

[root@localhost httpd-2.2.29]# ll Makefile
-rw-r--r-- 1 root root 8909 Sep  6 12:44 Makefile

4、进行编译

[root@localhost httpd-2.2.29]# make

编译的时候,就会出现类似这么多乱七八糟的信息,编译的时间比较长,CPU使用率会很高,这是因为CPU高速计算,编译完后,再使用 echo $? 验证一下是否正常成功。

[root@localhost httpd-2.2.29]# echo $?
0

如果是0的话,就可以执行最后一步了。

5、安装

[root@localhost httpd-2.2.29]# make install

当然你也可以使用 echo $? 看看有没有正确安装,执行完这一步,则会在 “/usr/local/apache2” 目录下增加了很多目录。

[root@localhost httpd-2.2.29]# ls /usr/local/apache2/
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules

遇到错误不能完成安装的情况是很多的。通常都是因为缺少某一个库文件导致的。这就需要你仔细琢磨报错信息或者查看当前目录下的 “config.log” 去得到相关的信息。

6、启动服务看能否正常访问

[root@localhost httpd-2.2.29]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
                                                          [  OK  ]

7、访问网页IP看能否访问web

原创文章,作者:M20_he,如若转载,请注明出处:http://www.178linux.com/44112

(0)
M20_heM20_he
上一篇 2016-09-06 22:03
下一篇 2016-09-06 22:25

相关推荐

  • 计算机之路及初识linux

    写在前面:     很抱歉,上周的事儿,拖到这周,也是个半成品,加班就不多说了,每个人都很忙,总要自己找时间。本计划这个周末好好补补,无奈身不由己,刚刚回来。    还好昨夜先起了个初稿,总算是有些东西可以交代给自己,想到马哥说的,完成远比完善重要,虽然来不及完善,先发出来吧,有了框架,至少知道自己做过什么。尽快排版吧…

    Linux干货 2016-12-05
  • wk_02 作业

    Linux 文件管理命令 cp命令 功能 Linux 系统中cp命令是用来复制目录/文件的。 概要 单源复制 cp [OPTION]… [-T] SOURCE DEST DEST不存在则事先创建此文件,并复制源文件的数据流至DEST中; DEST存在 DEST是非目录文件:则覆盖目标文件; DEST是目录文件:则先…

    Linux干货 2016-12-11
  • 第八周作业脚本练习

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;      在线的主机使用绿色显示;      不在线的主使用红色显示;          &…

    Linux干货 2017-02-01
  • Linux入门 及Basics基础

    二进制: 0, 1 5大部件: CPU:计算器、控制器 Memory: 存储器(内存) 编址存储单元阵列 输入设备/输出设备:I/O 键盘: VGA: 辅助存储器 网卡 编程: 低级语言:汇编(微码编程) 高级语言:JAVA, C++, C, Scala, Python 转件: 时序复用: 计算机:硬件+软件 硬件:开发,制造 软件:编写,编译 OS: Op…

    Linux干货 2016-08-08
  • 关于大型网站技术演进的思考(十五)–网站静态化处理—前后端分离—中(7)

    原文出处: 夏天的森林    上篇里我讲到了一种前后端分离方案,这套方案放到服务端开发人员面前比放在web前端开发人员面前或许得到的掌声会更多,我想很多资深前端工程师看到这样的技术方案可能会有种说不出来的矛盾心情,当我的工作逐渐走向越来越专业化的前端开发后,我就时常被这套前后端分离方案所困惑,最近我终于明白了这个困惑的本源在哪里…

    Linux干货 2015-03-11
  • awk应用和systemd

    一:练习 1、求每班总成绩和平均成绩 name class score wang   1    100 zhang  2    90 li     1    80 2、为编译安装的httpd服务,实现service unit文件 3、破解centos7 口令 …

    Linux干货 2016-09-22