Linux运维*一.Linux基础---22、程序的编译安装

一、源码包

1、源码包:未被编译制作成二进制格式的rpm包

2、源码包命名格式: packetname-version-release.src.rpm

3、源码包的安装:需要使用rpmbuild命令编译成为二进制的rpm包才能进行安装

4、源码包的有点:系统兼容性强

源码rpm包在指定的OS上进行编译,编译成为目标代码,在将目标代码进行汇编,成为二进制代码

5、源码包安装流程:

源码包 ---> 预处理 ---> 编译为目标代码 ---> 汇编为二进制代码 ---> 连接 ---> 执行

6、C语言程序源码编译安装三步骤:

通过项目管理器make调用编译器(gcc等),并依赖configure(脚本模板)、Makedike.in(脚本选项),makefile文件,进行源码程序的打包、构建、编译

  步骤一: ./configure:

通过选项传递参数,指定启用特性、安装路径等;

执行时会根据用户的指定及Makefile.in文件生成makefile;

步骤二:make

检查各源码程序依赖的其它程序文件及外部环境;

  根据makefile,构建应用程序

  步骤三:make install:

将构建的二进制程序放到指定的路径,相当于cp命令、

  补充:当./configure执行报错的时候,需要查看报错信息,即使处理

否则make将无法执信(如:报错没有依赖关系的外部环境,则需要安装依赖环境)

  7、源码编译的相关工具

autoconf:生成./configure脚本

       automake:生成Makefile.in脚本选项

8、常见编译器:

c/c++ :gcc(GNU C Complier),集成了其它编译器,能编译C及C之外的一些源代码如java

 

二、C源码程序编译安装示例

1、环境准备:

  开发工具:make,gcc等

                开发环境:开发库(glibc:标准库)、头文件

可直接以包组形式安装开发环境“

[root@localhost ~]# yum grouplist | grep Development

There is no installed groups file.

Maybe run: yum groups mark convert (see man yum)

Development and Creative Workstation

Development Tools

 

[root@localhost ~]# yum groupinstall "Development Tools"

 

2、获取源码程序

[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.41.tar.bz2

[root@localhost ~]# ls

httpd-2.4.41.tar.bz2 tree-1.6.0-10.el7.x86_64.rpm

[root@localhost ~]# tar -jxvf httpd-2.4.41.tar.bz2 -C ./

 

3、查看INSTALL说明及./config 选项

[root@localhost ~]# cd httpd-2.4.41

[root@localhost httpd-2.4.41]# cat INSTALL

[root@localhost httpd-2.4.41]# ./configure --help

安装路径的设定:

--prefix=/指定路径 #指定默认的安装路径

--sysconfdir=/指定路劲 #指定配置文件的安装路径

...

System types:系统类型

Optional Features:可选特性

--disable-特性

--enable-特性

Optional Packages:依赖包

--with-包

--without-包

 

4、编译安装

./configure:

[root@localhost httpd-2.4.41]# mkdir -p /root/httpdHome/conf

[root@localhost httpd-2.4.41]# ./configure --prefix=/root/httpdHome --sysconfdir=/root/httpdHome/config

 

make编译:

make # 普通编译

make -j # 多线程编译,加快编译速度

 

make install

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章