Linux 源码编译安装软件


程序包编译安装的步骤:

源代码-->预处理-->编译-->汇编-->链接-->执行
多文件:文件中的代码之间,很可能存在跨文件依赖关系

编译源码的项目工具

使用相关的项目管理工具可以大大减少编译过程的复杂度

根据源码类型来对这些工具进行分类:

C、C++的源码编译:使用 make 项目管理器

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

相关开发工具:

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

java的源码编译: 使用 maven

C 语言源代码编译安装过程

利用编译工具,只需要三个步骤:

1. ./configure --- 官方提供的脚本,功能是生成makefile文件
2. make makefile_name --- 自动调用makefile文件定义的信息检查依赖环境并编译生成二进制程序(这个时候并不会安装)
3. make instal --- 把生成的二进制文件按照指定的路径复制到对应路径下面。

步骤一:

有了这个脚本就不用使用gcc来一步步编译了。
rpm、yum:批量安装 源码安装:私人定制
(1) 允许添加安装的信息(安装路径、需要启用的功能);执行时会参考用户的指定以及Makefile.in文件生成Makefile
(2) 检查依赖到的外部环境,如依赖的软件包

步骤二:

根据Makefile文件,会检测依赖的环境,进行构建应用程序

make选项:

-j num(cpu核数) --- 多任务。指定使用多颗cpu进行同时编译

步骤三:

复制文件到相应路径
注意:安装前可以通过查看README,INSTALL获取帮助

编译安装准备

准备:安装相关的依赖包
开发工具:make, gcc (c/c++编译器GNU C Complier)
开发环境:开发库(glibc:标准库),头文件,可安装开发包组 Development Tools
软件相关依赖包

编译安装

第一步:运行 configure 脚本,生成 Makefile 文件

  • 其选项主要功能:
  • 可以指定安装位置
  • 指定启用的特性(启用什么功能)
    执行这个命令的时候还会检查编译过程所依赖的文件是否都存在。
    获取其支持使用的选项: ./configure --help

选项:

设置安装路径和其他一些信息

安装路径设定

--prefix=/PATH:指定默认安装位置,默认为/usr/local/
--sysconfdir=/PATH:配置文件安装位置

软件特性和相关指定:

Optional Features: 可选特性

--disable-FEATURE
--enable-FEATURE[=ARG]

Optional Packages: 可选包

--with-PACKAGE[=ARG] 依赖包
--without-PACKAGE 禁用依赖关系
注意:通常被编译操作依赖的程序包,需要安装此程序包的"开发"组件,其包名一般类似于namedevel-VERSION

第二步:make

执行make命令需要调用gcc这个工具,所以需要提前安装gcc工具

第三步:make install

安装后的配置

1. 二进制程序目录导入至PATH环境变量中,编辑文件/etc/profile.d/NAME.sh

export PATH=/PATH/TO/BIN:$PATH

2. 相关用户及文件

有些开源软件编译完成后,还需要创建相关的用户及文件

3. 导入帮助手册

编辑/etc/man.config|man_db.conf文件,添加一个MANPATH

编译安装实战案例

源码一般存放在: /usr/loacl/src 里面
编译安装的前提:需要首先安装 gcc make autoconf gcc-c++ glibc glibc-devel等工具
遇到不明确的错误就删除文件夹,重新解压从头来一次。

官网下载并编译安装新版 tree

1.使用rpm -qi tree 查看trr命令的官网下载最新版本。
2.将下载的文件使用tar命令解压到指定的目录

某些程序过于简单,所以就直接提供了makefile文件,没提供config脚本。直接make就行了。因为confige的目的就是生成makefile文件。