源码的编译和安装

以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)

    练习题

    Linux笔记 2018-04-03
  • Linux基础知识入门

    涉及内容:
    计算机组成、发行版介绍、哲学思想、基本命令介绍、命令帮助使用、系统基本目录名和功用介绍

    2018-05-13
  • Linux第一周命令总结

    hostname  完整主机名  cat +文件路径 可查看文件信息 cat /etc/centos-release 查看文件  版本的名称、发行时间所有shell cat/etc/shells  显示当前系统使用的 lsd_release -a  命令  查看版本 /etc/centos-release 是文本文件  cat是查看文本的命令 uname-r…

    2018-07-22
  • 文本处理三剑客:sed简介

    文本处理三剑客:sed简介 sed是一种流编辑器,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。 处理过程 sed命令将当前处理的行读入模式空间(pattern space)进行处理,sed在该行上执…

    Linux笔记 2018-04-03
  • 移动和重命名文件

    删除命令:  

    Linux笔记 2018-04-01
  • linux 学习5

    第五周(7.16-7.30)

    2018-07-30