make工作时的执行步骤

GNU的make工作时的执行步骤

  (1)读入所有的Makefile

  (2)读入被include的其它Makefile

  (3)初始化文件中的变量

  (4)推导隐晦规则,并分析所有的规则

  (5)为所有的目标文件创建依赖关系链

  (6)根据依赖关系,决定哪些目标重新生成

  (7)执行生存命令

  定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。

  为了避免和文件重名的情况,可以使用一个特殊的标记".PHONY"来显示地指明一个目标是“伪目标”,向make说明,不管是否有这个文件,这个目标就是“伪目标”。

  如果make执行时,带入make参数“-n” 或“--just-print”。那么其只是显示命令,但不会执行命令,这个功能有利于调试Makefile。而make参数“-s”或者“--slient”则是全面禁止命令的显示

转载于:https://www.cnblogs.com/xiongqiangcs/p/3888529.html

<think>我们正在解决用户在安装sshpass过程中执行`make`步骤的问题。根据引用[1]和引用[3]的安装说明,在解压源代码并进入目录后,需要依次执行`./configure`、`make`和`sudo make install`。其中`make`步骤是编译源代码的关键步骤。 ### 执行`make`步骤的详细说明 1. **确保已正确配置**: 在运行`make`之前,必须先运行`./configure`脚本。该脚本会检查系统环境,并生成适合当前系统的Makefile。如果`./configure`执行失败,`make`将无法正确编译。 ```bash cd sshpass-1.06 # 进入解压后的目录 ./configure # 配置编译环境 ``` 如果出现错误,请检查错误信息。常见问题包括缺少编译工具(如gcc)或库文件。 2. **执行`make`命令**: 当`./configure`成功完成后,运行`make`命令开始编译: ```bash make ``` - 此命令会读取Makefile文件,并调用编译器(如gcc)将源代码编译成可执行文件。 - 编译过程会在终端输出详细的编译信息。如果出现错误,请根据错误信息排查问题。 3. **常见错误及解决方法**: - **错误:`make: command not found`** 说明系统未安装make工具。安装方法: ```bash # Ubuntu/Debian sudo apt install build-essential # CentOS/RHEL sudo yum groupinstall "Development Tools" ``` - **错误:缺少头文件或库** 例如:`fatal error: stdio.h: No such file or directory` 需要安装C标准库开发包: ```bash # Ubuntu/Debian sudo apt install libc6-dev # CentOS/RHEL sudo yum install glibc-devel ``` - **其他编译错误** 检查是否下载了完整的源码包,或尝试重新下载(引用[3]提供了下载链接)。 4. **安装编译好的程序**: 编译成功后,运行以下命令安装: ```bash sudo make install ``` 这会将`sshpass`可执行文件复制到系统目录(如`/usr/local/bin`)。 ### 验证安装 ```bash sshpass -V # 应显示版本信息(如sshpass 1.06) ``` ### 注意事项 - 如果使用源码包版本不同(如1.09),请替换目录名(引用[2]使用了1.09版本)。 - 在Mac系统上,可能需要先安装Xcode命令行工具(引用[2]): ```bash xcode-select --install ``` §§相关问题§§ 1. 如何解决`./configure`执行的“缺少C编译器”错误? 2. 为什么`sudo make install`后仍无法运行sshpass? 3. 如何在Linux系统中彻底卸载sshpass?</think>### 安装 sshpass 过程中 `make` 步骤执行指南 在 sshpass 安装过程中,`make` 步骤是编译源代码的关键阶段。以下是详细执行说明和常见问题解决方案: #### 标准执行流程 1. **完成配置后执行 make**: ```bash # 进入解压后的目录 cd sshpass-1.05 # 执行 make 命令(普通用户权限) make ``` 2. **预期输出**: ``` gcc -g -O2 -o sshpass sshpass.o ``` 表示成功编译,生成 `sshpass` 可执行文件 #### 常见问题及解决方案 1. **`make: command not found` 错误**: ```bash # Ubuntu/Debian sudo apt install build-essential # CentOS/RHEL sudo yum groupinstall "Development Tools" ``` 2. **编译错误(如缺少依赖)**: ```bash # 安装基础开发库 sudo apt install libc6-dev # Ubuntu sudo yum install glibc-devel # CentOS ``` 3. **权限问题**: ```bash # 确保目录所有权 sudo chown -R $USER:$USER . ``` 4. **MacOS 特殊处理**: ```bash # 先安装 Xcode 命令行工具 xcode-select --install # 再执行 make make ``` #### 验证编译成功 ```bash # 检查是否生成可执行文件 file sshpass # 预期输出:sshpass: ELF 64-bit LSB executable, x86-64... # 测试功能 ./sshpass -h ``` #### 最佳实践建议 1. **查看配置摘要**: ```bash ./configure | grep -i "checking" ``` 确保关键依赖(如C编译器)显示 "yes" 2. **并行编译加速**: ```bash make -j$(nproc) # 使用所有CPU核心 ``` 3. **调试模式**: ```bash make V=1 # 显示详细编译命令 ``` > **重要提示**:如果 `./configure` 步骤失败,`make` 将无法成功执行。请优先解决配置阶段的错误[^1][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值