我在 Keil 5 中编译
使用 armcc:
*** Using Compiler 'V5.06 (build 20)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
我收到以下错误:
compiling softdevice_handler.c...
"no source": Error: #5: cannot open source input file "..\..\..\..\..\..\components\softdevice\common\softdevice_handler\softdevice_handler.c": No such file or directory
..\..\..\..\..\..\components\softdevice\common\softdevice_handler\softdevice_handler.c: 0 warnings, 1 error
我确定源c文件存在。我在 GUI 中添加了它,我可以在 GUI 中打开它。
那么,如果文件确实存在,为什么编译器会提示文件不存在呢?
最佳答案
好的,我发现问题是 windows 7 path length limit of ~255 bytes .
结合keil编译器的愚蠢。它的作用是结合
项目路径+相对资源路径。例如:
project path: projects/projectX/toolchain/keil5/projectX.uvprojx
src path is : projects/projectX/src/a/b/src.c
那么 armcc 内部使用的是:
projects/projectX/toolchain/keil5/../../a/b/src.c
它增加了额外的:
/toolchain/keil5/../../
因此,即使 src.c 不是太深,当您对部分项目路径求和时,它也可以超过 255 个字符。
arm的解决方案是去:
Project->options->C/C++->Misc Controls
并添加“--reduce_paths
”。见keil armcc manual .另一种选择是将项目复制到更靠近根文件夹的位置,以减少最大项目路径。
关于path - keil编译器错误-无法打开源输入文件-但文件存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39516798/