error: #5: cannot open source input file “sys.h“: No such file or directory 解决办法

博主在运行STM32程序时遇到找不到“sys.h”文件的报错。解决办法是将“sys.c”和“sys.h”文件复制到工程“user”文件夹下的“sys”文件夹内,再将这两个文件添加到工程,包含其绝对路径,编译便不再报错,此类问题添加文件即可解决。

今天在玩stm32板子的时候,找了一个别人的程序,一运行发现有这样一个报错:

error:  #5: cannot open source input file "sys.h": No such file or directory

其实这个错误的意思是没有找到“sys.h”这个文件,我复制的程序中用到了这个文件,而我的工程里面没有这个文件。

那么添加一下就好了。

把“sys.c”和“sys.h”这两个文件复制到我工程“user”文件夹下的“sys”文件夹内,这个文件夹用于存放一些外设等东西的.c、.h文件。

 复制进去之后,再回到工程内,把这两个.c、.h文件添加进去,右击“user”添加即可。

 添加完成之后,还要包含他们的绝对路径。按照下图中的方框顺序点击即可。

 接下来,继续添加,按照方框顺序自上而下操作即可。

 好,这一步完成之后就可以了,编译已经不会再报错了。

error: #5: cannot open source input file XXX: No such file or directory

这一类型的其他问题解决办法大同小异,添加文件即可。

sys.c文件和sys.h文件网络上应该会有,实在找不到私信我即可。

<think>好的,用户遇到了一个编译错误,具体是在delay.c文件的第31行,无法找到"./SYSTEM/sys/sys.h"这个头文件。我需要分析可能的原因,并给出解决方法。 首先,错误信息指出编译器找不到指定的头文件路径。可能的问题包括路径错误、文件缺失或者编译环境配置问题。用户使用的是相对路径,所以需要检查路径是否正确。 接下来,应该考虑头文件的实际位置。用户包含的路径是"./SYSTEM/sys/sys.h",这里的“./”表示当前目录。如果delay.c所在的目录是Drivers/SYSTEM/delay,那么当前目录应该是这个delay文件夹。但SYSTEM目录可能位于其他位置,比如项目根目录下,导致相对路径不正确。 另一个可能性是文件确实不存在。用户需要确认sys.h是否存在于指定的路径中。如果路径层级不对,可能需要调整包含路径或者移动文件。 此外,编译器设置中的包含路径是否包含了SYSTEM目录的父目录?比如,如果SYSTEM文件夹在项目根目录下,可能需要添加-I../来让编译器找到正确的路径。 还应该检查文件名和大小写是否正确,特别是在区分大小写的系统上,比如Linux。如果文件名是Sys.h而代码中是sys.h,会导致找不到文件。 最后,建议用户检查这些方面,逐步排查问题。可能需要调整包含路径的写法,或者修改编译器的配置,确保所有必要的目录都被正确包含。</think>这个错误提示表明编译器在编译delay.c文件时,无法找到名为"./SYSTEM/sys/sys.h"的头文件。以下是逐步排查和解决问题的思路: **1. 检查文件路径关系** - 文件层级:假设你的工程目录结构为: ``` ProjectRoot/ ├── Drivers/ │ └── SYSTEM/ │ └── delay/ │ └── delay.c (当前文件) └── SYSTEM/ └── sys/ └── sys.h (目标头文件) ``` - 相对路径分析:`#include "./SYSTEM/sys/sys.h"`中的`./`表示**当前文件所在目录**(即delay目录)。此时路径会指向: ``` ProjectRoot/Drivers/SYSTEM/delay/SYSTEM/sys/sys.h ❌ ``` 而实际文件位置是: ``` ProjectRoot/SYSTEM/sys/sys.h ✅ ``` **2. 解决方案** *方案一:修正相对路径(推荐)* ```c // 使用相对于项目根目录的路径(需配置编译器包含路径) #include "SYSTEM/sys/s.h" // 或使用上级目录索引 #include "../../SYSTEM/sys/sys.h" ``` *方案二:配置编译器搜索路径* - 在IDE(如Keil、IAR)或编译脚本中添加头文件搜索路径: ``` -I ../SYSTEM/ # 假设编译器工作目录在Drivers/下 ``` **3. 验证文件存在性** - 手动检查文件系统中`sys.h`是否真实存在于指定位置 - 注意文件名大小写(Linux系统区分大小写) **4. 工程结构优化建议** - 创建`Inc`文件夹集中存放头文件 - 使用标准目录结构(如CMSIS规范) **典型正确配置示例:** ```c // delay.c 中使用统一包含方式 #include "sys.h" // 编译器设置包含路径: -I ../SYSTEM/sys/ -I ../Drivers/SYSTEM/delay/ ``` 如果问题仍未解决,建议提供完整的工程目录结构截图,以便进一步分析路径映射关系。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值