【Linux】make/Makefile的理解

1.make是一个命令,makefile是一个文件, 依赖关系和依赖方法.

a.快速使用一下 

i.创建一个Makefile文件(首字母也可以小写)

b.依赖关系和依赖方法

i.依赖关系: 我为什么要帮你? mybin:mytest.c

ii.依赖方法: 怎么帮? gcc -o mybin mytest.c

 make之前要注意先创建一个mytest.c文件写好我们要运行的内容.

写入一些简单的内容主要是先跑通Makefile​​

iii.可以make了

这时候他自动的就能帮我们编译把源文件编译形成一个可执行程序.

c.make和makefile 修改文件内容才更新

i.基本语法

①怎么清理这个临时文件(mybin)呢?

项目的自动化构建和自动化清理

此时我们发现已经没有mybin的文件了.

如果clear和mybin互相换位子会发生什么呢?make是clear. make mybin才是生成.

③总结: 

①Makefile和make 形成目标文件的时候,默认是从上到下扫描makefile文件的, 默认形成的是第一个目标文件

②默认只形成一个

ii. make和makefile怎么知道可执行程序是比较新的呢?

这个是通过对比时间比出来的,只要可执行程序的最近修改时间比所有源文件的最近修改时间新,说明它就是最新的.

源代码和可执行程序谁比较新,如果原代码比较新就可以更新,如果可执行程序比较新就会Makefile成功 


2. 认识一下时间

a. 文件 = 内容(modify)+属性(change)

b.查看这些修改等时间的指令:

state mytest.c(这里用mytest.c举例)

各个单词带表的含义:

Modify -- 内容(修改时间)

Change ---属性(改变)

Modify修改change也会跟着变,change变可能单独变

Access -(访问)  : 特殊阶段更新

对比Modify最好,因为 touch mytest.c (更新文件对应的时间)


3.有没有一个方法能让我不用每次访问都touch?答案是: 有.

a.这里要介绍一下 PHONY 的使用了

i..PHONY:mybin # 修饰对应的mybin目标文件,成为一个伪目标,总是被执行.

ii.一般推荐把clean设置成伪目标.

同时为了养成良好的习惯,这里还要用一下类似于宏的操作:

至少也要这样这里用的是mytest.c举例.

$@: 代表目标文件

$^: 代表对应的依赖文件列表

 到这里就结束啦, 谢谢观看!

<think>好的,我现在要解决用户的问题:在Linux中运行Makefile时遇到权限不足的问题,需要使用chmod来修复。首先,我需要回忆一下相关的知识,并结合提供的引用内容来给出正确的解决方案。 用户提到的是权限问题,而Linux中的权限管理通常涉及chmod命令。当执行Makefile时,如果相关的脚本或文件没有执行权限,就会导致权限不足的错误。因此,解决方案应该是通过chmod命令给文件添加可执行权限。 接下来,我需要确认在Makefile的上下文中哪些文件可能需要执行权限。通常,Makefile本身并不需要执行权限,因为它是由make工具读取的。但是,如果Makefile中有规则涉及到执行某些脚本或编译后的二进制文件,这些目标文件或脚本可能需要执行权限。例如,如果有一个规则是运行一个脚本,而这个脚本没有x权限,那么执行时会报错。因此,用户需要检查Makefile中是否有需要执行的脚本或生成的可执行文件,并为其添加权限。 根据引用[3],makemakefile的关系是,make读取makefile中的规则来执行命令。因此,权限问题可能出现在makefile调用的命令或生成的文件上,而不是makefile本身。因此,用户可能需要检查生成的目标文件或脚本是否有正确的权限。 可能的步骤包括: 1. 检查Makefile中是否有需要执行的脚本或生成的可执行文件。 2. 使用chmod +x命令为这些文件添加执行权限。 3. 确保在运行make命令时,用户有足够的权限,可能需要使用sudo。 另外,引用[4]提到在编译内核时遇到问题,需要安装依赖库,虽然这不是直接的权限问题,但提示了在编译过程中可能需要管理员权限,比如使用sudo来运行make命令。但用户的问题不是编译错误,而是权限不足,所以可能需要考虑是否需要以root权限运行make,或者修改文件权限。 可能的解决方案: - 如果Makefile中的某些命令需要root权限(例如安装到系统目录),则需要在make命令前加sudo,如sudo make install。 - 如果问题出在生成的文件或脚本没有执行权限,可以在Makefile中添加chmod命令,例如在规则中添加chmod +x script.sh,或者在执行前手动添加。 例如,在Makefile中添加: install: chmod +x script.sh ./script.sh 这样在执行make install时,会先给script.sh添加执行权限,再运行。 或者,用户可以直接在终端中运行chmod +x 文件名来手动添加权限。 需要确保用户理解权限修改的风险,特别是使用chmod 777可能会带来安全风险,应该尽量最小化权限设置,比如只给必要用户添加执行权限。 总结步骤: 1. 检查错误信息,确定具体哪个文件权限不足。 2. 对该文件使用chmod +x filename添加执行权限。 3. 如果涉及系统目录安装,使用sudo提升权限。 4. 在Makefile中预置权限设置,避免每次手动处理。 同时需要提醒用户谨慎使用sudo和chmod,避免不必要的安全风险。</think>在Linux中运行Makefile时遇到权限不足的问题,通常是由于文件或目录缺少执行权限或用户权限不足导致的。以下是逐步解决方案: ### 1. **检查具体错误信息** 首先查看终端报错信息,确认是哪个文件或操作导致权限不足。例如: ```bash make: *** [install] Error 1 /bin/sh: ./script.sh: Permission denied ``` ### 2. **为文件添加执行权限** 若错误指向某个脚本(如`script.sh`)或生成的可执行文件,使用`chmod`赋予执行权限: ```bash chmod +x script.sh # 为单个文件添加权限 chmod -R +x ./src/ # 递归为目录下所有文件添加权限(慎用) ``` ### 3. **在Makefile中预置权限设置** 在Makefile的相关规则中直接添加权限修改命令,例如: ```makefile install: chmod +x script.sh # 添加执行权限 ./script.sh ``` ### 4. **以管理员权限运行make** 如果操作涉及系统目录(如`/usr/local/bin`),需使用`sudo`提升权限: ```bash sudo make install # 常见于安装阶段 ``` ### 5. **检查文件所有权** 若文件属于其他用户(如`root`),需修改所有权: ```bash sudo chown $USER:$USER script.sh # 将文件所有者改为当前用户 ``` --- ### 注意事项 - **最小权限原则**:避免使用`chmod 777`,优先使用`+x`或特定用户权限。 - **安全风险**:谨慎为外部脚本添加权限,需确保脚本来源可信[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

No more cages

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值