1、GCC搜索头文件规则
-
首先gcc会从当前目录寻找所需要的头文件,一般是用户自定义的头文件。
-
gcc会根据 -I 参数指定的头文件路径 来搜索头文件,如下,头文件路径为/usr/openwin/include,/srv/lib为动态库路径。
gcc -I /srv/include -L /srv/lib hello.c
-
gcc从自身的环境变量C_INCLUDE_PATH、CPLUS_INCLUDE_PATH、OBJC_INCLUDE_PATH 中寻找所需要的头文件
-
从内定目录 /usr/include /usr/local/include /usr/lib/gcc-lib/i386-li中寻找所需要的头文件。
都找不到时 就会报错。
2、在makefile中指定头文件路径
#编译器的路径
CC= /opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
#指定头文件路径,提示警告编译,
CFLAGS=-Wall -I/home/develop/include
#源文件路径
SRCS=main.c sum.c com.c
#动态库路径
LIBS=-L /usr/lib
#指定目标文件,所有的.c文件改名为.o文件(保留%处的字符,其余字符要替换)
OBJS=$(SRCS:%.c=%.o)
#指定可执行文件的名字
EXECUTABLE=ssj_flyfish
#编译生成目标文件
$(EXECUTABLE):
$(CC) -o $(EXECUTABLE) $(CFLAGS) $(SRCS) $(LIBS)
3、查看交叉编译器默认的搜索路径
echo 'main{}'| arm-linux-gnueabihf-gcc -E -v -
这个路径和你安装交叉编译器的配置,和交叉编译器自身被编译成可执行文件时的配置有关。
如果不想使用gcc默认的头文件和库路径,可以在编译时加上 -nostdinc 和 -nostdlib 参数。更详细的可以去阅读gcc手册。
各位过路老铁,有收获的话 点个赞吧