源码的编译和安装

以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)
上一篇 2018-04-20 21:37
下一篇 2018-04-21 21:16

相关推荐

  • 变量替换 字符串处理

    变量替换非空 空 不存在 Var=${Str-Expr} Str 空 Expr Var=${Str:-Expr} Str Expr Expr 不存在至stderrVar=${Str?Expr} Str 空 Expr(stderr) Var=${Str:?Expr} Str Expr(stderr) Expr(stderr) 不存在 被赋值Var=${Str=…

    Linux笔记 2018-07-15
  • 文本处理工具sed的高级用法

    在上一章,我们学习了sed的一些基本用法,利用这些基本用法我们已经可以解决文本处理中遇到的绝大部分问题,但要想更加利用好sed这个工具,我们还需要学习下它的一些高级用法。

    2018-04-20
  • httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接

    虚拟主机,站点访问控制,基于用户的访问控制,持久链接

    2020-01-20
  • 简述osi七层模型和TCP/IP五层模型

        OSI七层模型各层定义 物理层:提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。 数据链路层:在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。 网络层:控制分组传送系统的操作、路由选择、拥护控制、网络互连等功能,它的作用是将具体的物理传送…

    2018-06-15
  • Linux文本处理工具

    抽取文本的工具: 文件查看命令: 分页查看文件内容: 显示文本前或后行的内容: 抽取文本cut和合并文件paste cut和paste: 分析文本的工具: 文件排序sort:  

    Linux笔记 2018-04-08
  • shell脚本

    shell脚本的练习题

    2018-04-18