我在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中打开它。
那么,如果文件存在,编译器会抱怨该文件不存在?
答案 0 :(得分:2)
好的,我发现问题是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个字符。
手臂的解决方案是转到:Project->options->C/C++->Misc Controls
并添加“--reduce_paths
”。见keil armcc manual。
另一种选择是将项目复制到根文件夹附近,以减少最大项目路径。