2016-09-15 7 views
0

が存在する - オープンソースの入力ファイルはできません:私は確信していたKeil社のコンパイラエラー - が、ファイルは私がarmccをを使用してKeil社の5 でコンパイル

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 

*** Using Compiler 'V5.06 (build 20)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' 

と、私は次しまったエラーソースcファイルが存在します。私はGUIでそれを追加し、私はGUIでそれを開くことができます。

なぜファイルが存在する場合、コンパイラはファイルが存在しないと不平を言うのですか?

答えて

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を参照してください。

プロジェクトをルートフォルダに近づけると、プロジェクトの最大パスが小さくなります。

関連する問題