编译工具准备
GCC编译器 官网
通过apt yum dnf 等包管理工具安装
GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection) [1] 。
Make 文档
通过apt yum dnf 等包管理工具安装
GNU Make是一个可以自动运行shell命令并帮助执行重复任务的程序。它通常用于将文件转换成其他形式,例如将源代码文件编译成程序或库。
Make适用于构建小型C/ c++项目或库,这些项目或库将包含在另一个项目的构建系统中。大多数构建系统都有办法集成基于make的子项目。
对于较大的项目,您会发现更现代的构建系统更易于使用。
在以下情况下,我建议使用非Make的构建系统:
当正在构建的目标(或文件)数量为(或最终将为)数百时。 需要一个“配置”步骤,它设置和保存变量、目标定义和环境配置。 该项目将保持内部或私有,将不需要由终端用户构建。 您会发现调试是一项令人沮丧的工作。 您需要构建的是跨平台的,可以在macOS、Linux和Windows上构建。 在这些情况下,您可能会发现使用CMake、Bazel、Meson或其他现代构建系统是一种更愉快的体验。
一般情况下发布的linux源码包中包含了makefile文件
Autoconf 官网
帮助我软件开发者通过使用GNU m4语言在configure.ac中写出限定配置脚本行为的列表。Autoconf将configure.ac中的命令转化为对应特定平台的配置脚本。Autoconf本身并不具备编译能力,它仅仅用于产生通常附带在软件包中的配置脚本。生成configure脚本。
Automake
是一种编程工具,可以产生供make程序使用的Makefile,用来编译程序。它是自由软件基金会发起的GNU计划的其中一项,作为GNU构建系统的一部分。automake所产生的Makefile符合GNU编程标准。
automake是由Perl语言所写的,必须和GNU autoconf一并使用。
具体使用参考相关文章automake,autoconf使用详解
CMake 官网
跨平台的编译工具 ,一般情况下不用(c语言的程序),因为服务器软件大多跑在linux上。
可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。
安装流程
configure配置
通过 –help可以查看命令选项
默认的通用参数 --prefix安装目录,不指定则安装到默认目录
./configure --prefix=/xxx/xxx/
其他配置项,需要看具体软件编译安装文档说明
make -j 线程数 加速编译
如何解决依赖问题
一下两个命令可以查看已安装程序的依赖
ldd 二进制程序文件 可以查看静态的二进制文件依赖的共享库
lsof -p PID 显示Linux系统当前已打开的所有文件列表,PID为进程数字
执行./configure 根据依赖报错来确定需要的依赖
更新动态链接库
安装后提示xxx.so.7: cannot open shared object file: No such file or directory
执行 ldconfig /usr/local/lib/ 更新动态库缓存
实战练习
编译安装php
编译安装ffmpeg
相关文章