Linux下Make查找头文件的默认路径及配置方法咨询
从源码构建Git时的头文件路径问题解答
一、Linux下Make默认搜索头文件的路径
Make本身不直接负责头文件搜索,实际遵循调用的编译器(如GCC)的默认搜索规则,常见默认路径包括:
/usr/include:系统标准库头文件的默认存放目录,大部分系统自带依赖的头文件都在这里/usr/local/include:用户手动编译安装软件时,头文件的默认输出目录,你安装OpenSSL后能被自动识别,就是因为GCC默认会扫描这个路径- 编译器自带的内部头文件目录,比如GCC的
/usr/lib/gcc/[系统架构]/[GCC版本]/include(具体路径随系统和GCC版本变化)
二、查看或配置头文件搜索目录
查看默认搜索路径
- 查看GCC的完整默认头文件搜索列表,执行命令:
输出中gcc -v -E -x c /dev/null#include <...> search starts here:下方的内容就是所有默认搜索路径 - 查看当前Makefile是否自定义了头文件路径,可以直接查看Makefile中的
CPPFLAGS变量,其中-I开头的参数就是额外添加的头文件搜索目录
配置搜索目录
- 临时配置:在执行make时直接指定额外路径,比如:
这个路径会被优先于默认路径搜索make CPPFLAGS="-I/自定义头文件目录" - 永久配置(按需使用):
- 编辑目标项目的Makefile,添加一行:
CPPFLAGS += -I/你的头文件路径,仅对当前项目生效 - 设置环境变量
export CPPFLAGS="-I/自定义路径",后续所有通过make调用的编译都会生效,但不建议全局设置,避免影响其他项目编译
- 编辑目标项目的Makefile,添加一行:
- 提示:优先通过系统包管理器安装依赖的开发包(比如OpenSSL的
libssl-dev),这类包会自动将头文件放到/usr/include,无需手动编译配置
三、Linux软件安装位置查看方法
- 查看已安装软件的所有文件路径(Debian/Ubuntu系):
例如查看dpkg -L 软件包名称libssl-dev的文件位置:dpkg -L libssl-dev - 查找单个文件的位置:
- 用
find命令全局搜索:sudo find / -name "文件名",比如sudo find / -name "ssl.h" - 用
locate命令快速搜索(需先更新数据库):sudo updatedb locate ssl.h
- 用
- 查看可执行文件的位置:
which 软件名:输出该软件可执行文件的绝对路径,比如which gitwhereis 软件名:输出可执行文件、手册页等相关文件的路径,比如whereis git
内容的提问来源于stack exchange,提问作者44stonelions
相关产品推荐
相关产品推荐

