源码的编译和安装

以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

相关推荐

  • 脚本基础课后练习

    (1)编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 #!/bin/bash echo “MY hostname is `hostname`”echo “My IPv4 address is `ifconfig …

    Linux笔记 2018-04-13
  • liniux课程第一周总结

    第一天课程内容 MBR分区类型:主分区:1-4,一块硬盘最多4个主分区,不可以分小区,可以用来启动操作系统(系统分区),直接建文件系统,存放数据扩展分区:一块硬盘最多一个扩展分区,可以没有,加主分区最多4个,不能创建文件系统,可以再划分更小的分区(即逻辑分区)逻辑驱动器(分区):可以创建文件系统,存放数据 系统分区:启动操作系统的分区启动分区:安装操作系统的…

    Linux笔记 2018-04-01
  • 软件包管理 1 —–基本知识 rpm yum

    软件包管理,要做到如何管理软件 ,包括安装 ,卸载, 基本的功能查询,搜索等重点如何使用rpm包yum管理如何编译安装**软件 运行和编译 **ABI:Application Binary Interface 操作系统接口标准,调用2进制程序的接口Windows 与Linux不兼容ELF(Executable and Linkable Format)PE (…

    Linux笔记 2018-04-22
  • Vim文本编辑器

    Vim文本编辑器 行编辑器:sed 全屏编辑器:nano ,vim :r!cat a.将a的内容粘贴到vim ZZ保存退出 ,ZQ不保存退出 ,:q!强退 :wq!保存强退 vim 的三种工作模式 控制模式 改写模式 命令模式 命令模式: W file 另存为。 r  file 写入文件内容。 !command 执行命令 r!command 读取命令输出 地…

    2018-04-15