Linux基础知识:软件源码的编译与编译工具make & cmake

Linux基础知识:软件源码的编译与编译工具make & cmake

make是经典编译工具,cmake 是一种跨现代化的平台编译工具,可在不同平台上优化编译工作,比 make 更为高级和现代化一点。

cmake主要是编写 CMakeLists.txt 文件,用cmake命令将 CMakeLists.txt 文件转化为 make 所需要的 makefile 文件,最后用 make 命令编译源码生成可执行程序或共享库.

make

常用命令

# 编译
make
# 生成配置脚本,方便自定义编译参数。
# 一般软件源码内,自带了 configure。
make configure
# 查看编译帮助
./configure -help
# 安装
make install
# 卸载,只支持编译安装的软件
make uninstall
# 清理 make 缓存
make clean
# 深度清理
make distclean

configure 是一个shell脚本,它可以自动设定源程序以符合各种不同平台上Unix系统的特性,并且根据系统叁数及环境产生合适的Makefile文件或是C的头文件(header file),让源程序可以很方便地在这些不同的平台上被编译连接。

基本编译流程

# 进入软件源码目录
cd <dir>
# 查看编译帮助,或查看软件编译文档,如果没有 configure,查看文档,或 make configure
./configure -help
# 配置软件,比如自定义安装目录,并启用分享动态库模式
./configure --prefix=<dir> --enable-shared
# 编译 并 安装
make && make install

--prefix 安装目录

--enable-shared 启用分享动态库模式,才能自动安装至 lib 内,才能被其他软件动态调用

如果编译安装目录不在标准目录的话,如 /usr/local 内,那么不会自动安装至 lib,需要自行手动设置 /etc/ld.so.conf.d 内的配置文件,并指定地址。最后更新 ldconfig

cmake

官网:CMake.org

常用命令

# 帮助
cmake --help
# 编译
cmake <dir> 
# 编译并设置自定义参数与值
cmake .. -D <var>=<value>

基本编译流程

编译并安装

# 进入源码目录
cd <dir>
# 创建一个编译文件夹,并进入.防止中间文件,污染源码文件
mkdir <dir> && cd <dir>
# 1. 可直接编译源码,便按照 CMakeLists.txt 配置文件运行构建 Makefile 文件
cmake ..
# 2. 可设置自定义参数,设置安装目录,并启用动态库分享
cmake .. -D CMAKE_INSTALL_PREFIX=<dir> -D BUILD_SHARED_LIBS=ON
# 进行 make 安装
make && make install

CMAKE_INSTALL_PREFIX 设置安装目录

BUILD_SHARED_LIBS 启用动态库分享

卸载

# 进入编译文件目录
cd <dir>
# 安装完成后会有一个 install_manifest.txt 记录文件的安装地址,直接批量删除即可
cat install_manifest.txt | sudo xargs rm

之后再删除源码包即可。

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