gcc -c src/main.c
- Makefile的规则
target … : prerequisites …
command
- gcc
gcc -o hello hello.c -I /home/hello/include-L /home/hello/lib –lworld
I目录作为第一个寻找头文件的目录,
L表示将/home/hello/lib目录作为第一个寻找库文件的目录,
gcc -lm 的选项,C代码调用math.h中的函数有问题,如sqrt函数。若如sqrt(3.0)则可以编译通过并运行正常,若如sqrt(n),这里n是定义好的double型变量,则不能编译通过,错误信息为:undefined reference to ‘sqrt’。
-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找.
-o 输出可执行文件
-c 编译生成目标文件
-g 输出调试信息
-O2 编译器优化级别 1-3
-Wall 警告选项 输出警告信息
-l 紧接着链接库 lpthread
-L 指定链接库的路径
-I 头文件路径
-shared 编译成动态链接库
注意-c只是生成目标文件,而-o直接回生成可执行文件
.c.o:
这句话的意思就是 %.o : %.c
也就是说,所有的.o文件,依赖于对应的.c文件
src=$(wildcard .c ./sub/.c)
dir=$(notdir $(src))
obj=(patsubst(dir) )
wildcard把 指定目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。
notdir把展开的文件去除掉路径信息
patsubst把$(dir)中的变量符合后缀是.c的全部替换成.o
继续阅读与本文标签相同的文章
下一篇 :
阿里巴巴正式开源自研容器技术Pouch
-
在闲鱼实习做Flutter是什么感受?
2026-05-18栏目: 教程
-
阿里云智能--基础产品技术月刊 2019年8月
2026-05-18栏目: 教程
-
《Android进阶解密》| 每日读本书
2026-05-18栏目: 教程
-
watchbog再升级,企业黄金修补期不断缩小,或面临蠕虫和恶意攻击
2026-05-18栏目: 教程
-
阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性| 9月9号栖夜读
2026-05-18栏目: 教程
