源码的编译和安装

以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

相关推荐

  • 学习笔记(14)

    学习笔记(14)

    Linux笔记 2018-04-30
  • shell脚本之判断httpd是否有异常

    案例 以web为例 大全讲解:如http为例 #/etc/init.d/httpd start      开启httpd #lsof –i :80 [root@centos6 ~/bin]$curl -I -s -o /dev/null -w “%{http_code}\n” http://172.16.0.1 析:-I 是响应头,响…

    Linux笔记 2018-05-20
  • centos 7.4 上源码安装 mysql 数据库

    实验: centos 7.4 上源码安装 mysql 数据库   检查相应的坏境 查看下防火墙iptables和selinux 是否关闭,没关闭先关闭。 再查看下原来主机上是否已有 mariadb 数据库,如果有先卸载在进行安装。   装包 yum install bison bison-devel zlib-devel libcurl-devel liba…

    Linux笔记 2018-06-05
  • 软raid5制作

     一、准备工作 (1)VMware虚拟机 (2)centos6.9系统 二、在centos6.9关机状态下增加3块硬盘做RAID5,其中一块当校验盘。 三、用远程终端可以清楚的显示新增加的硬盘,将新增加的硬盘进行分区   四、开始制作 mdadm -C /dev/md0 -a yes -l 5 -c 32 -n 2 -x1 /dev/sd{b1,c…

    2018-04-29
  • Linux文件权限详解

    Linux系统中不仅是对用户与组根据UID,GID进行了管理,还对Linux系统中的文件,按照用户与组进行分类,针对不同的群体进行了权限管理,用他来确定谁能通过何种方式对文件和目录进行访问和操作。

    2018-04-04
  • 文件查找命令locate与find的对比分析

    文件查找命令locate与find的对比分析一、locate 1、locate命令是用来文件查找的命令,依赖于事先构建的索引。而索引的更新并不是实时的,而是每次开机启动或者管理员手动更新。因为是使用事先建立的索引库进行检索,所以会有以下特点: 1)查找速度快 2)模糊查找 3)非实时查找 4)搜索的是文件的全路径,不仅仅是文件名 5)可能之搜索用户具备读取和…

    Linux笔记 2018-04-14