源码的编译和安装

以httpd的安装为例,详细讲解了编译安装的原理

程序包编译

程序包编译安装

Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作 成二进制格式的rpm包,而后再安装

源代码–>预处理–>编译–>汇编–>链接–>执行

源代码组织格式:

多文件:文件中的代码之间,很可能存在跨文件依赖关系

C、C++:make 项目管理器

configure脚本 –> Makefile.in –> Makefile

configure脚本三个功能:软件的启用禁用、安装目录、检测依赖的包是否存在

java: maven

C语言源代码编译安装三步骤:

1、./configure

(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的 指定以及Makefile.in文件生成Makefile

(2) 检查依赖到的外部环境,如依赖的软件包

2、make 根据Makefile文件,构建应用程序

3、make install 复制文件到相应路径

开发工具: autoconf: 生成configure脚本

automake:生成Makefile.in

注意:安装前查看INSTALL,README

c/c++编译器: gcc (GNU C Complier)

编译C源代码:

准备:提供开发工具及开发环境 开发工具:make, gcc等

开发环境:开发库,头文件

glibc:标准库

实现:通过“包组”提供开发组件

Development Tools

Server Platform Development   (centos6上有)

第一步:configure脚本

选项:指定安装位置、指定启用的特性

–help: 获取其支持使用的选项

选项分类:

安装路径设定:

–prefix=/PATH: 指定默认安装位置,默认为/usr/local/

–sysconfdir=/PATH:配置文件安装位置

System types:支持交叉编译

Optional Features: 可选特性

–disable-FEATURE

–enable-FEATURE[=ARG]

Optional Packages: 可选包

–with-PACKAGE[=ARG],依赖包

–without-PACKAGE,禁用依赖关系

注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件,其包名 一般类似于name-devel-VERSION

第二步:make

第三步:make install

安装后的配置: Ø

  • 二进制程序目录导入至PATH环境变量中

编辑文件/etc/profile.d/NAME.sh

export PATH=/PATH/TO/BIN:$PATH

  • 导入库文件路径 编辑/etc/ld.so.conf.d/NAME.conf

添加新的库文件所在目录至此文件中

让系统重新生成缓存: ldconfig [-v] 编译安装

(3) 导入头文件 基于链接的方式实现: ln -sv

(4) 导入帮助手册 编辑/etc/man.config|man_db.conf文件

添加一个MANPATH

编译安装httpd2.4.25

第一步,下载源码

tar   xvf   httpd-2.4.25.tar.bz2      解包

第二步,安装开发包组

yum   groupinstall   “Development   Tools”

第三步,查看

cat   README

cat    INSTALL

第四步,cd    /root/ httpd2.4.25

./configure   –prefix=/data/apache24    –sysconfig=/etc/apache24/   //定义好安装路径(也可跟是否启用或禁用某功能)

12

yum   install     apr-devel包

yum   install     apr-until-devel包(在这安装过程中,缺什么包,安装什么包)

第五步,  make   -j   4

第六步, make   install

第七步,访问测试

iptables   -vnL    查看是否关闭防火墙

/data/apache24/bin/apachectl   start     启动服务

netstat   -ntl     查看端口是否开启

 

setenforce  0        //关闭SELinux

 

curl   http://ip地址/脚本名   |bash     //实现远程运行脚本

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96702

(0)
qljqlj
上一篇 2018-04-20 21:37
下一篇 2018-04-21 21:16

相关推荐

  • 挂载点 文件通配符 目录的一些理解

    挂载点 挂载点实际上就是linux中的磁盘文件系统的入口目录,类似于windows中的用来访问不同分区的C:、D:、E:等盘符。其实Windows也支持将一个磁盘分区挂在一个文件夹下面,只是我们用C:、D:这样的盘符操作用惯了,一般没有将分区挂到文件夹。文件一般挂载在misc文件夹下 在我们打开Centos 6(并未登录)时在远程控制台是不能看到挂载点的如图…

    2018-04-01
  • 脚本练习

    1、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间tar Jcf /etc/ /data/ectbak-`date -d “-1 day” +%F-%H`.tar.xz30 1 * * 1-5 /root/Myscrip…

    Linux笔记 2018-05-08
  • shell脚本编程基础(1)

    要想玩转Linux系统,编写shell脚本是必须要掌握的技能。那什么是shell编程呢?简单来说,shell编程就是对多个Linux命令进行逻辑处理。

    2018-04-10
  • elk

    转载,供日后回查

    2018-07-31
  • linux磁盘的利用

    RAID简介 RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小而廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 。 硬盘是个很脆弱的东西,它经常会坏掉。为了保证服务器可靠耐用,硬盘必须时时刻刻保持可用。由于RAID的出现,它的目的…

    Linux笔记 2018-04-29
  • 网络模型与linux资源管理工具

    osi七层网络模型
    TCP/iP五层网络模型
    htop
    vmstat
    dstat
    ip命令
    ss命令

    2018-07-24