- ベストアンサー
KPIT GCCでno include path
- H8のKPIT GNU Toolsを使ってmakeした際に「no include path in which to search for stdio.h」というエラーが出る理由がわからない
- #include <stdio.h>によるエラーが発生するが、hello.cをコンパイルする際にはエラーが発生せず、デフォルトのインクルードパス設定で問題なくコンパイルできる
- Makefileにはインクルードパスの設定は指定されていないため、エラーの原因は不明
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
make は「拡張子」を見て「どういう処理をするか」を決めます. hello.c なら拡張子は「.c」なので「C のプログラム」と判断し (デフォルトでは) マクロ $(CC) に与えられたプログラムを使います. これに対し 8fp_io.C では拡張子が「.C」なので「C++ のプログラム」と解釈し $(CXX) で与えられるプログラムを起動します. Windows に慣れているとファイル名の大文字/小文字の区別に無頓着になりがちですが, このようにしっかり区別しなければならないこともあるので注意が必要です. ということで, ・Makefile で 8fp_io.C となっているところを 8fp_io.c に直す and/or 8fp_io.C というファイル名を 8fp_io.c に直す あるいは ・Makefile の CXX の設定を適当に変える (何が適当かは知りません. h8300-elf-g++ か?) ということをしてあげるといいかも.
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
「H8のKPIT GNU Tools (v11.02, Windows版) を使ってmakeした」ときにどのような命令が実行されるのか, そして「試しに、("#include <stdio.h>"を用いる) hello.cを作って、h8300-elf-gccでコンパイルした」ときにどのようなコマンドを実行したのか, それぞれ書いてもらえますか?
補足
回答ありがとうございます。お手数おかけします。 まず、hello.cですが、 内容は、---ここから--- #include <stdio.h> int main(void) { int ret; ret = printf("Hello, World!\r\n"); return ret; } ---ここまで--- となります。 コンパイル: c:\nekocup\temp\gnuh8test>h8300-elf-gcc hello.c -o hello.out makeしたときは、 c:\nekocup\make_test>make g++ -c -o test1.o 8fp_io.C test1.C:4:20: error: no include path in which to search for stdio.h と、エラーが出ました。 、、、今気がついたのですが、コンパイルするときのプログラムが、h8300-elf-gccではなく、g++になっていました。 Makefileには、 CC = h8300-elf-gcc.exe ~省略~ .c.o: .S.o: $(CC) $(CFLAGS) $(INCLUDES) -c $< と書いてあるのですが、、 どうぞよろしくお願いします。
お礼
拡張子を小文字のcに変更したところ、コンパイルできるようになりました。 大変助かりました、ありがとうございました。