多文件(分模块)的编译过程

发布时间 2023-10-21 20:26:07作者: 踏浪而来的人

有三个文件cal.c、cal.h、main.c

cal.c中是模块的函数实现,cal.h是模块的函数申明,main.c是调用各模块的功能。

#include <> 和#include ""区别:

<>是从linux标准的头文件目录下去找头文件,如/usr/include/、/usr/local/include

""是从当前的编译路径(即当前在哪个路径(pwd命令看),这个就是当前的编译路径)下去找头文件,如果找不到就去标准的头文件路径下找。

通常我们一般创建四个目录存放工程文件:src、obj、include、bin。

src存放源码,obj存放目标文件,include存放头文件,bin存放可执行程序

 

如果cal.c、cal.h、main.c文件在一个文件夹下,gcc cal.c main.c就能编译成功,不用-I指定头文件所在的路径就能找到头文件(预编译时会用到这个头文件),因为cal.h就在当前的编译路径下。

如果cal.h放在include目录下,cal.c main.c放在src目录下,那么就得用-I指定头文件所在目录,让编译器去指定的文件夹去找头文件gcc cal.c main.c -Iinclude