Linux培训
达内IT学院

400-111-8989

Linux安装程序 - 3


达内linux基础教程频道为大家介绍第二种安装新程序/库的方式。

安装方法,源代码编译安装,这个想做嵌入式的同学一定要掌握,不管是什么平台,安装(嵌入式里说移植更专业一些)的方法万变不离其宗。

假如我想安装某个包,但是apt-cache search 搜索没搜到,那么我可以去百度谷歌搜到这个包的源码,然后编译安装。

举个例子,比如我想在虚拟机里弄个http 服务器,百度谷歌搜了一下,好家伙minihttpd/apache/uhttpd/lighttpd这么多种服务器程序,这个时候就要权衡下,首先放到嵌入式设备上apache 太大不适合,其他三种都还可以,那就从功能和性能考虑了。但我是要放到虚拟机上的,所以我选择了apache,如果是公司http服务器之类的apache 也是很好的选择。apache 作为http 服务器是久负盛名了,我在这里假装apt-cache 搜不到它,所以apt-get install没有办法安装。我先去官网下载了源码:

Linux安装程序

有耐心的同学可以看看release note分析看选择哪个版本,没耐心的直接下载最新版。

有时候我们想直接用命令行下载怎么办?Ubuntu 提供了wget 和curl 命令来下载远程文件,wget 现在好像涉及版权问题了,curl 可以免费使用,curl也支持上传文件,且同时支持FTP和HTTP两种协议(FTP/HTTP后面介绍协议时会详细讲诉)。比如我知道apache的源码包下载连接: #/apache//httpd/#2

然后就可以:

curl怎么用?那可以看看help 说明:

curl [options….] ,显然url 放最后,options是什么?

Linux安装程序

Linux安装程序

-a 就是options之一,后面是介绍该option的具体细节。浏览所有的options发现我们只需要-o 就行了,-o指定下载到本地要保存的文件名字:

Linux安装程序4

Linux安装程序5

Linux安装程序6

像.tar, .zip, .tar.gz, .gz, .bz2, tar.bz2等等后缀的文件,都是压缩文件,需要进行解压缩。类比下windows 的winrar方便理解。

解压命令tar(不懂的一样去看命令大全):

Linux安装程序7

Linux安装程序8

注意圈住的configure 文件,这个是配置编译环境和生成Makefile 的地方。先来简单介绍下Makefile,后面到Linux C部分会详细讲解,一般windows 下的开发环境IDE(集成开发环境)都会有个”编译”或者”编译并执行”按钮(参考VC6.0 和VS2008),但Linux 环境下没有这种编辑器,Linux 提供了gcc/cc 命令(实际上叫编译器,不同厂商的gcc 可能也是不同的,当然也可能不叫gcc,后面会有讲解)用来编译源码,但有时候文件太多了,不可能一个一个的gcc 命令去编译,而且也不可能每次都一个一个文件的去gcc 编译,于是就有了Makefile的凌空出世,与Makefile相伴的就是make 命令了,简单来说,执行make 命令,系统会按照当前目录下的Makefile 里面的规则来编译代码。

很显然这个apache 的源码没有Makefile,但看到configure 文件就可以开心的笑了,这个文件就是为我们生成Makefile 文件的(一般开源代码作者不故意戏弄别人的话,都会遵循这个原则,即要么提供Makefile 要么提供configure,configure的好处是可以根据不同的硬件平台(比如ramips、arm、x86、power PC等等)选择生成不一样的Makefile)。至于如何编译如何安装和使用,一般可以看看根目录下面有没有README/readme/building/INSTALL什么的文件,会有介绍如何执行configure 和编译/安装/使用,很幸运的是我简单看了下是有的:vi INSTALL

Linux安装程序9

但如果代码包里没有这些文件怎么办?别急,我们从官网下载东西,官网自然会告诉我们怎么使用:

Linux安装程序10

点开编译与安装:

Linux安装程序11

Linux安装程序12

有兴趣的可以详细看一下,我这里就不细说了。

配置环境并生成Makefile:

1. ./configure --prefix=PREFIX, 注意这里的PREFIX是斜体字,这是告诉我们这个是需要改成自己的内容,那么改成什么呢,prefix是用来配置安装目录的,即最后我们的程序和相关文件会放到哪里。

Linux安装程序13

在/usr/目录下创建个linuxtest目录,不懂mkdir 的照旧命令大全

Linux安装程序

执行./configure

Linux安装程序15

很不幸的是报错了。这个时候我们可以翻翻README/readme/building/INSTALL,发现没有什么线索,官网:

Linux安装程序16

我们需要几个依赖库或者程序。我们不得不点击蓝色Apache APR安装依赖的APR,这里允许我偷个懒,使用apt-get安装,如果再介绍源码安装APR会重复,因为原理和apache 一样一样的。搜索下apr包:

Linux安装程序17

配置错误提示:

Linux安装程序18

看看libapr1-dev的介绍,是不是很像?

Linux安装程序19

apt-get install libapr1-dev,再做./configure --prefix=/usr/linuxtest

Linux安装程序20

同样对比libaprutil1-dev:

Linux安装程序21

apt-get install libaprutil1-dev,再做./configure --prefix=/usr/linuxtest:

Linux安装程序22

Makefile 文件有了。

实际上只需要apt-get install libaprutil1-dev 就够了,为什么呢?

Linux安装程序23

apt-get install会把依赖库或者程序安装上,所以实际上我们下次可以apt-get install带util的,因为它一看名字像是个应用程序,肯定会把各种依赖库安装上。

编译,./configure成功后,执行make,很顺利完成了编译,一般写的比较好的代码在多个平台都可以编译通过,有时可能因为平台和编译器gcc 关系,不一定能顺利通过,这时候需要我们做一些改动,这里先不讲,后面介绍。ls 查看根目录下,发现多了点东西,主要多了个发着绿光的httpd。记得我们的包叫什么吗?httpd-2.4.20,这个httpd 实际上就是我们要的东西了,最起码是之一。因为有时一个安装包源码会编译出来多个有用的程序或者库文件。

Linux安装程序24

安装,make install:记得我们配的安装目录吗?现在什么都没有,install 之后应该会有些东西,要有这个意识在脑子里。

查看安装目录下没有文件:

Linux安装程序25

执行make install:

Linux安装程序26

sudo 执行make install:

Linux安装程序27

再次查看安装目录:

Linux安装程序28

/usr/linuxtest下面终于有东西了,而且不指一个有用的文件,这点做移植的时候要切记。一般有用的就是bin/conf/lib/目录下面的文件,其他的多是一些辅助性文件,要不要都可以。

验证即使用:

程序配置文件一般都叫xxx.conf,所谓配置文件就是保存一些好像QQ上面配置是否需要保存密码啊,是否自动登录啊等等选项的文件。。

Linux安装程序29

因为apache 是http 服务器,http 协议需要有个根目录,所有的http 文件请求都会到这个目录下面找相应请求的文件。同时如果用户只输入IP/域名:端口,比如http://www.baidu.com:80,那么也要展示个首页给用户,如果http 监听80端口,浏览器不需要输入80,即http://www.baidu.com:80等同于http://www.baidu.com。

根目录:

Linux安装程序30

首页:

Linux安装程序31

监听的IP/域名和端口:

Linux安装程序32

启动:执行命令 /usr/linuxtest/bin/httpd -f /usr/linuxtest/conf/#

在虚拟机里我们用火狐输入127.0.0.1(127.0.0.1是本机可以访问的地址):

Linux安装程序

Linux安装程序34

Linux安装程序35

看下index.html内容:

Linux安装程序36

也就是说默认带不带index.html都是跳转到index.html,这也是很多http服务器的共同特点,如果用户只输入IP或者域名,都会有一个默认的html页面展示。即127.0.0.1/index.html 等同于127.0.0.1

对于主机范围虚拟机的http 服务可以通过虚拟机的IP访问:

桥接模式:

Linux安装程序37

主机访问虚拟机HTTP 服务,同时修改了index.html内容验证:

Linux安装程序38

看下index.html内容,

Linux安装程序39

可以正常访问。

添加个新页面:

Linux安装程序40

Linux安装程序41

主机下访问虚拟机HTTP 服务器:

Linux安装程序42

主机下的127.0.0.1是访问不到虚拟机的:

Linux安装程序43

修改conf,端口不变,监听IP 修改:

Linux安装程序44

执行 killall httpd(不懂的看命令大全的killall)和

/usr/linuxtest/bin/httpd -f /usr/linuxtest/conf/#,每次修改.conf 文件都要重新启动httpd。

127.0.0.1,可以访问:

Linux安装程序45

用192.168.1.113访问不通:

Linux安装程序46

主机访问虚拟机HTTP:

Linux安装程序47

再次修改,不监听127.0.0.1,改成192.168.1.113,这次应该是127.0.0.1不能访问,而192.168.1.113可以访问。

执行 killall httpd 和

/usr/linuxtest/bin/httpd -f /usr/linuxtest/conf/#

Linux安装程序48

127.0.0.1不能访问:

Linux安装程序49

192.168.1.113可以访问:

Linux安装程序50

主机通过192.168.1.113可以访问:

Linux安装程序51

Apache 的代码安装即使用介绍到此结束。

总结:对于需要新添加的功能比如http服务器,先去百度/谷歌找找有没有现成的比较稳定的开源代码比如minihttpd/uhttp/apache,开源是为了以后扩展自己的需求可以在上面修改。

然后分析哪种更适合自己的需求,比如编译完成后有多大,要安装在什么设备上,对性能和功能要求有多高,权衡好了之后,去官网下载源码并阅读编译和使用说明,然后放到虚拟机里操作一次,要确保成功。最后如果是移植到嵌入式设备里,就把在虚拟机里做的操作照搬到嵌入式设备里调试,如果有问题再分析原因。希望各位看过这篇文章之后不是关注在apache 的安装,而是学会了如何安装任意新的程序或库。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Linux安装程序 - 2
下一篇:Shell 脚本的创建和执行

Linux安装程序 - 2

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省