• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:KPIT GCCでno include path)

KPIT GCCでno include path

このQ&Aのポイント
  • H8のKPIT GNU Toolsを使ってmakeした際に「no include path in which to search for stdio.h」というエラーが出る理由がわからない
  • #include <stdio.h>によるエラーが発生するが、hello.cをコンパイルする際にはエラーが発生せず、デフォルトのインクルードパス設定で問題なくコンパイルできる
  • Makefileにはインクルードパスの設定は指定されていないため、エラーの原因は不明

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.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++ か?) ということをしてあげるといいかも.

noname#230227
質問者

お礼

拡張子を小文字のcに変更したところ、コンパイルできるようになりました。 大変助かりました、ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「H8のKPIT GNU Tools (v11.02, Windows版) を使ってmakeした」ときにどのような命令が実行されるのか, そして「試しに、("#include <stdio.h>"を用いる) hello.cを作って、h8300-elf-gccでコンパイルした」ときにどのようなコマンドを実行したのか, それぞれ書いてもらえますか?

noname#230227
質問者

補足

回答ありがとうございます。お手数おかけします。 まず、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 $< と書いてあるのですが、、 どうぞよろしくお願いします。

関連するQ&A