情景:
- 在a.c对应的a.h中增加头文件xxx.h,但是一直提示
In file included from a.c:25:0:
a.h:4:35: 致命错误:xxx.h:没有那个文件或目录
#include <xxx.h>
- 分析:
反复确认头文件名称 - - - 没错。
经过询问同事,是因为在a.c所在文件的makefile中的CFLAGS没有增加对xxx.h路径的编译选项(xxx.h在common/include下)。修订如下:
CFLAGS = -pthread -fPIC -I../../include -I../common/include
即可顺利编译通过。
- 顺便学习了CFLAGS的作用:
CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来。
所以,CFLAGS就是用来指定头文件路径的,xxx.h如果连路径都没有,怎么可能会编译通过呢?
- 那-I是什么意思?
-I dir:在头文件的搜索路径列表中添加dir目录
附上gcc总体选项列表(参考:https://blog.csdn.net/xinyuan510214/article/details/50457433):