shiba
2016年12月6日 15時55分
いつもお世話になっております。 芝と申します。
プログラム作成に当たって行き詰ってしまい教えていただきたいです。
ATDE5 i386を用いて、.cファイルを作成し、gcc ---.c -o xxxにて実行ファイルを作成しようとしたところ
場所にないといわれてしまい作成できない状態です
atmark@atde5:~/sample/test_serial$ ls
serial_echo_server1.c
atmark@atde5:~/sample/test_serial$ gcc serial_echo_server1.c -o AAA
serial_echo_server1.c:13:22: fatal error: exitfail.h: そのようなファイルやディレクトリはありません
compilation terminated.
atmark@atde5:~/sample/test_serial$
初歩的な質問になって申し訳ないのですが、教えていただけたら幸いです。
よろしくお願いいたします。
コメント
shiba
h_ikao
shiba
at_hanada
花田です。
コンパイルはできたとのことですが、ソース記述者の意図とC言語の仕様について補足いたします。
ソースでは、システムのヘッダファイルincludeに
#include <stdio.h> #include <stdlib.h> #include <string.h>
と書かれているのに対し、exitfail.hでは
#include "exitfail.h"
とファイル名の囲み記号に違いがあります。
C言語の教本でも早い段階で記載されることと思いますが、見過ごしてしまう方も多いようです。
【C言語】#include と#include "hoge.h"の違い - 小さい頃はエラ呼吸
http://replication.hatenablog.com/entry/2014/04/17/213753
ダブルクォーテーションで囲まれたヘッダファイルは(システムではなく)ユーザーヘッダなので、
通常はソースファイル(.c)と同じディレクトリ(カレントディレクトリ)に置かれることを意図しています。
この場合、-Iによるディレクトリ指定がなくてもコンパイルできるはずです。
at_takashi.sasayama
2016年12月6日 16時27分
笹山です。
> atmark@atde5:~/sample/test_serial$ gcc serial_echo_server1.c -o AAA
> serial_echo_server1.c:13:22: fatal error: exitfail.h: そのようなファイルやディレクトリはありません
ビルドされようとしているのは、以下でしょうか?
Armadillo実践開発ガイド 第2部 6.27. シリアルエコーサーバー(serial_echo_server1.c)
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-3…
その場合、エラーとなっている exitfail.h を作成する必要があります。
exitfail.h は以下に記載していますので、Cソースと同じディレクトリに保存して、
再度コンパイルしてみてください。
Armadillo実践開発ガイド 第2部 6.14. エラー内容表示とFAILURE終了するためのヘッダ(exitfail.h)
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-3…