编译自制OS Lesson9时遇fatal error:头文件找不到
解决Makefile编译时头文件找不到的问题
步骤1:明确文件夹结构
先确认你的项目层级(确保路径对应):
Create_Your_Own_OS/ Lesson9/ include/ hwComms/ port.h src/ hwComms/ port.cpp Makefile
步骤2:修正源文件中的#include语句
将src/hwComms/port.cpp里的包含语句改成:
#include <hwComms/port.h>
或者
#include "hwComms/port.h"
无需在路径前添加include/前缀,后续通过Makefile配置编译器自动搜索该目录。
步骤3:修改Makefile添加头文件搜索路径
在Lesson9目录下的Makefile中,添加头文件目录变量,并将其传入编译器的搜索路径参数:
# 指定头文件根目录(Makefile所在目录下的include文件夹) INCLUDE_DIRS := ./include # 编译器编译选项,-I参数用于指定头文件搜索路径 CXXFLAGS := -Wall -Wextra -g $(addprefix -I,$(INCLUDE_DIRS)) # 示例编译规则:编译port.cpp生成目标文件 src/hwComms/port.o: src/hwComms/port.cpp $(CXX) $(CXXFLAGS) -c $< -o $@
如果你的Makefile位于Create_Your_Own_OS根目录,需要将INCLUDE_DIRS改为./Lesson9/include,确保路径指向正确。
步骤4:验证编译
执行以下命令清理旧编译文件并重新编译:
make clean && make
此时编译器会自动从指定的include目录下查找hwComms/port.h,不会再出现找不到文件的错误。
内容的提问来源于stack exchange,提问作者Tiago Mendes
相关产品推荐
相关产品推荐

