首页 > 代码库 > gcc 查看 引用头文件的位置

gcc 查看 引用头文件的位置

场景:

代码 使用了 msgpack库,但makefile 没有指定 msgpack的头文件所在位置,也可以编译通过。


可以得出 一定是在系统的某个位置 安装了 msgpack,并且被找到。


但具体头文件在哪个位置呢?


从网上 搜到 看到 都是 gcc/g++ 头文件的 搜索路径,-I指定头文件的搜索路径。 知道了搜索路径,那我 需要 遍历 搜索路径上的每个目录 去查找, 这样比较费时, 但也是最容易想到的。


但可以通过 gcc 编译程序的 过程,让 gcc 自己列出所在位置.


gcc 由源码到可执行二进制程序包含了:预处理,编译,汇编,链接,四个阶段;其对应gcc -E -S -c ,链接阶段没有特殊参数表示。


先说下gcc -o,这里o代表 output,即指定输出文件。

1.预处理阶段:gcc -E test.c -o test.i,

-E参数指定处理到预处理阶段停止,并输出预处理结果,这里指定输出文件-o 是因为指定的话会直接输出到标准输出,

2.编译阶段:gcc -S test.i -o test.s

这个阶段会把test.s 编译成 汇编代码

3.汇编阶段:gcc -c test.s test.o

这个阶段,把汇编代码,汇编成 二进制代码

4.链接阶段:gcc test.o -o test

和其他库一起 链接生成 可执行文件 test



可以利用预处理阶段 找到 xx.h


  1. make, 让makefile 生成  gcc 指令,因为可能包含了其他的 库 头文件,

  2. gcc -E test.c |grep xx.h

gcc 查看 引用头文件的位置