嵌入式Linux学习-默认规则

补充上一章遗漏的知识点 ; && \ :嵌入式Linux学习-Makefile基本语法:目标、依赖、命令、伪目标.PHONY-CSDN博客

本文提到的 ; && \ 三个基础符号的用法来源于以下链接。

Makefile基础 - Makefile教程 - 廖雪峰的官方网站

个人总结:&&是分号;的优化产品,两个符号都用在执行多条命令的情况下使用,更多是用在需要执行cd切换目录的指令的时候。

当命令1执行失败时,连接在&&后面的命令不会被执行。

复制代码
cd_ok:
    abc123 && echo "ok1"

当命令1执行失败时,连接在;后面的命令依旧会被执行

复制代码
cd_ok:
    abc123 ; echo "ok2"

make 有一条默认规则,当找不到 xxx. o 文件时,会查找目录下的同名xxx.c 文件进行编译。

如下所示

复制代码
.PHONY:clean
main:main.o input.o calcu.o
        gcc -o main main.o input.o calcu.o
 
clean:
        rm *.o
        rm main

现象如下:

复制代码
zwh@zwh-virtual-machine:~/makefile/part_1$ ls
calcu.c  calcu.h  input.c  input.h  main.c  Makefile
zwh@zwh-virtual-machine:~/makefile/part_1$ sudo make
cc    -c -o main.o main.c
cc    -c -o input.o input.c
cc    -c -o calcu.o calcu.c
gcc -o main main.o input.o calcu.o
zwh@zwh-virtual-machine:~/makefile/part_1$ ls
calcu.c  calcu.o  input.h  main    main.o
calcu.h  input.c  input.o  main.c  Makefile
zwh@zwh-virtual-machine:~/makefile/part_1$ ./main
input two num:3 7 

3 * 7 = 21

C 自动编译成 *.o 的默认规则有个缺陷,由于没有显式地表示 *.o 依赖于.h 头文件,假如我们修改了头文件的内容,那么 *.o 并不会更新,这是不可接受的。

相关推荐
wj3055853787 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
abigriver7 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
wangqiaowq8 小时前
windows下nginx的安装
linux·服务器·前端
YYRAN_ZZU8 小时前
Petalinux新建自动脚本启动
linux
charlie1145141919 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
于小猿Sup9 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y9 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
不仙52011 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
AI视觉网奇11 小时前
linux 检索库 判断库是否支持
java·linux·服务器
dapeng-大鹏11 小时前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展