make、cmake、make install、configure

编写程序的步骤
1、使用编辑器编写源代码,如.c/.cpp/等文件。
工具:编辑程序、结果:源代码。

2、使用编译器编译源代码生成目标文件,如.o/等文件。
工具:编译程序、结果:目标程序。

3、使用连接器链接目标代码生成可执行文件,如.exe/等文件。
工具:链接程序、结果:可执行程序。

make工具的由来:
但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是 一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编 写makefile文件也是一个程序员所必备的技能。

cmake工具的由来:
对于一个大工程,编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就 出现了cmake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。但是随之而来也就是编写 cmakelist文件,它是cmake所依据的规则。所以在编程的世界里没有捷径可走,还是要脚踏实地的。

make install :
将 make 生成的文件安装到系统目录中,如 /usr/bin,这一步需要 root 权限,所以通常得用 sudo make install。如果没有这一步,在命令行中输入程序名字不能启动相应程序。

configure
Linux 平台有各种不同的配置,安装时需要通过 configure 来确定,如:编译器用的是 cc 还是 gcc、不同库文件所在目录等。执行 configure 后会生成 Makefile,Makefile 规定了用什么编译器、编译参数等信息。

### 如何在指定目录下执行 `make` 和 `make install` 对于希望改变默认安装路径的情况,可以在执行 `make install` 命令时通过设置特定环境变量来实现这一目标。当使用基于 Makefile 的构建系统时,可以通过传递 `DESTDIR` 参数给 `make install` 来更改安装位置。 #### 使用 `DESTDIR` 安装至自定义路径 为了将项目安装到不同于默认的位置,比如 `/opt/myapp` 而不是标准的 `/usr/local` 或者其他预设的目标文件夹,应当采用下面的方式: ```bash sudo make install DESTDIR=/opt/myapp ``` 这条指令会把所有应该被放置于根 (`/`) 下面的内容都放到所指明的新前缀之下[^1]。 #### 配置阶段设定前缀 如果软件包支持 GNU 自动化工具链 (autoconf, automake),那么还可以更早地影响最终安装地点——即在运行 configure 脚本的时候就提供一个不同的前缀选项: ```bash ./configure --prefix=/desired/install/path ``` 之后再继续正常的编译流程(`make`)以及安装操作(`make install`)即可[^3]。 #### CMake 构建系统的处理方法 针对那些利用CMake作为其构建管理器的应用程序来说,则需注意的是应调整 `CMAKE_INSTALL_PREFIX` 变量而不是简单的 `DESTDIR`. 对于此类情况,推荐的做法是在首次配置项目之前就声明好这个变量: ```bash cmake -DCMAKE_INSTALL_PREFIX=/custom/path .. ``` 这同样适用于 Windows 平台上的 cmake 用户[^2]. #### 示例:完整的定制安装过程 假设有一个名为 example-project 的开源项目的源代码,并打算将其安装到个人空间内的某个子目录中去,具体步骤可能如下所示: ```bash cd ~/example-project/ mkdir build && cd $_ ../configure --prefix=$HOME/.local/example-project # 若适用的话 # 或者如果是CMake项目则替换上面那行为: # cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local/example-project .. make make test # 如果有测试套件的话建议先跑一遍确保一切正常工作 sudo make install ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值