源码编译安装| 学习笔记

简介: 快速学习源码编译安装。

开发者学堂课程【Linux 软件包安装和 yum源码编译安装】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/590/detail/8340


源码编译安装

 

内容介绍:

一、程序包编译

二、编译安装

三、总结

 

一、程序包编译

◆程序包编译安装∶

◆Application-VERSION-release.src.rpm-->

安装后,使用 rpmbuild 命令制作成二进制格式的 rpm 包,而后再安装◆源代码-->预处理-->编译-->汇编-->链接-->执行 

◆源代码组织格式∶

多文件∶

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

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

configure 脚本-->Makefile.in -->Makefile

java: maven

Configure 脚本是默认的脚本

源码的使用存在一个需要编译的过程,这个过程需要从预处理-->编译-->汇编-->链接-->执行,这个过程是很复杂的。

源码编译,可以通过一些官方提供的一些处理工具,将这个过程进行简化。

比如:make 项目管理器,Make 不是一个小工具,它是一个项目管理器。

美可,是将源码所提供的上几百上千的文件批量的进行管理,按照一定的逻辑批量的进行一个项目管理。Make将文件按照逻辑顺序进行逐步的编辑成一个二进制的。

Make 命令也会用到一些文件,比如说 Configure 脚本,该脚本是默认的脚本。

Configure 脚本是自动存在于你的文件包中的源代码,configure 脚本的作用很大,在这里进行安装路径的设置。

Makefile 在源代码中是没有的,需要用 Configure 脚本进行编译。还有一个作用是禁用一些功能。比如说一共有50个功能,有30个功能不会用到,就可以用 Makefile 将其进行禁用,以节约储存空间。

Makefile.in 是一个模板文件。

然后进行填充内容,就生成了 Makefile 文件。有了 Makefile 文件,Make 项目管理器就可以自动将该功能读取出来。然后 Make 就会自动的把它编写成二进制,储存在相关的路径下面。

 

二、编译安装

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

>1、./configure

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

(2)configure 是源码中已经有的文件,不需要我们重新写,同时这个文件单位很大。

configure 脚本不仅生成 Makefile还会检查编译过程当中使用的相关程序。

(3)检查依赖到的外部环境,如依赖的软件包源码编译前,要把这一些相关的使用的程序包提前装好,随着编译的越来越复杂,需要的包就越多。

提前安装包组:INSTALL,README

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

第二步就是执行命令。

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

◆开发工具∶

autoconf∶ 生成 configure 脚本 automake∶ 生成 Makefile.in

◆注意∶安装前查看INSTALL,README

操作:

[ root@centos7 data]#tar xf httpd-2.4.25. tar .bz2

root@centos7 data]#cd httpd-2.4.25/

[ root@centos7 httpd-2.4.25]#1s

ABOUT APACHE   Bui 1dBin. Dsp  emacs-sty le  LAYOUT NOTICE      srclib

acinc1ude.m4  bui 1dconf  httpd. Dep  li bhttpd. Dep NWGNUmakefi le support

注意:三个步骤必须都是在这个 httpd-2.4.25 总压缩目录里进行。

下面是安装说明的代码:

$ ./configure --prefix=PREFIX

$ make

$ make install

$ PREFIX/bin/apachect1 start

首先得看一下 Makefile 在哪些功能是能用的,哪些功能是禁用的。

加上 -enable-pie 表示启用功能

加上 -disable-authz 表示禁用功能 

[ root@centos7 httpd-2.4.25]#du -sh.

43M

[ root@centos7 httpd-2.4.25] #cat README

Fine. tuning ofthe instal lation di rectories:

-bindir=DIR          user executables [EPREFIX/bin]

Instal lation di rectories:

prefix=PREFIX

instal 1 archi tecture - i ndependent fi les in PREFIXL [/usr/ loca 1apache2]

>默认目录:EPREFIX/bin

>指定的目录:--bindir=DIR

>路径不要太复杂,最后删除会很麻烦。尽量做到统一存放。

[ root@centos6]#

[root@centos6]#

[ root@centos6]#rpm -qi httpd

Name:    httpd       Re locations: (not relocatable)

Version:  2.2.15       Vendor: Centos

搜索可执行权限:

[ root@centos7 httpd-2.4.25]#find -perm /111

安装的文件:

[ root@centos7 httpd-2.4.25]#ls /app

nttpd

[ root@centos7 httpd-2.4.25]#cd /app/httpd/

[ root@centos7 httpd]#ls

> (3) 导入头文件

基于链接的方式实现∶

In -sV

>((4) 导入帮助手册

编辑 /etc/man.configman_db.conf 文件

添加一个 MANPATH

etc 是我们自己配置的文件。

到此我们的源码编译就做完了,但是不完美。很多功能能用了,但是用起来不方便。

man 帮助的路径是我们自己指定的路径,Make 有可能是找不到的。可以提供修改路径,告诉 Make 文件的路径在哪里。

MANDATORY_MANPATH     /usr/man

MANDATORY_MANPATH     /usr/share/man

MANDATORY_MANPATH     /usr/local/share/man

MANDATORY_MANPATH     /app/httpd/man 

实验∶建立 EPEL,BASE 仓库别名启用 epel 源禁用 epel 源

关闭防火墙 centos7

systemctl disable firewalld systemctl stop firewalld

centos6

chkconfig iptables off service iptables stop

SELinux 关闭

vim /etc/selinux/config SELINUX=disabled

reboot

yum remove libvirt-daemon

yum install remove list info search groupinstall grouplist groupremove history yum clean all

 

四、总结:

实验:源码编译安装 httpd-2.4.25. tar.bz2

1 yum groupinstall "deve lopment tools"

yum install apr-devel apr -util -devel pcre-devel openssl-devel

2 useradd -r -u 80 -d /data/www/ -s /sbin/nologin httpd

3 tar xf httpd-2.4.25. tar .bz2cd cd httpd-2.4.25/

4 cat README

cat INSTALL

5./configure --help

./configure --prefix=/app/httpd --sysconfdir=/etc/httpd24 --enable-ssl --disable-status

6 make && make install

7 PATH

echo ' PATH=/app/httpd/bin:$PATH'

> /etc/profile .d/httpd. sh/etc/profile.d/httpd.sh

8 apachectl start

相关文章
|
6月前
|
关系型数据库 MySQL Apache
LAMP源码安装配置实战
LAMP源码安装配置实战
73 3
|
6月前
|
Linux 应用服务中间件 PHP
Linux下搭建PHP环境-源码编译安装PHP7.2
Linux下搭建PHP环境-源码编译安装PHP7.2
307 0
|
6月前
|
关系型数据库 MySQL 开发工具
ccentos7 源码!源码!源码 !编译安装 mysql 5.7.24
ccentos7 源码!源码!源码 !编译安装 mysql 5.7.24
55 0
|
Ubuntu Unix Java
Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
编译ubuntu驱动之前,发现使用的gcc是7.3.0,而使用apt管理和下载的都无法直接或间接安装gcc7.3.0,于是只能从源码安装gcc7.3.0编译器。
|
关系型数据库 MySQL 应用服务中间件
LNMP架构——源码编译安装
1、编译安装nginx服务 2、编译安装mysql服务 3、编译安装php解析环境
LNMP架构——源码编译安装
|
关系型数据库 MySQL Apache
|
存储 Oracle 关系型数据库
LAMP架构——源码编译安装(二)
1、LAMP架构概述 2、编译安装Apache httpd 服务 3、编译安装mysql 服务 4、编译安装PHP 解析服务 5、利用LAMP搭建论坛
LAMP架构——源码编译安装(二)
|
关系型数据库 MySQL PHP
LAMP架构——源码编译安装(三)
1、LAMP架构概述 2、编译安装Apache httpd 服务 3、编译安装mysql 服务 4、编译安装PHP 解析服务 5、利用LAMP搭建论坛
LAMP架构——源码编译安装(三)
|
前端开发 关系型数据库 MySQL
LAMP架构——源码编译安装(一)
1、LAMP架构概述 2、编译安装Apache httpd 服务 3、编译安装mysql 服务 4、编译安装PHP 解析服务 5、利用LAMP搭建论坛
LAMP架构——源码编译安装(一)