Armadilloフォーラム

プログラム作成にあたって教えてください。

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$

初歩的な質問になって申し訳ないのですが、教えていただけたら幸いです。
よろしくお願いいたします。

コメント

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…

笹山様
早急な返信ありがとうございます。

> その場合、エラーとなっている exitfail.h を作成する必要があります。
> exitfail.h は以下に記載していますので、Cソースと同じディレクトリに保存して、
> 再度コンパイルしてみてください。

こちらに関して作成済みなのですが、
/home/atmark/atmark-dist/glibc/include
の下に保存し、コンパイルをかけようとしているのですが、場所が違ったのでしょうか....?

> gcc serial_echo_server1.c -o AAA -I/home/atmark/atmark-dist/glibc/include
> では?

返信ありがとうございます。
無事コンパイルすることができました

お騒がせしてしてしまい申し訳ございません。

花田です。
コンパイルはできたとのことですが、ソース記述者の意図と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によるディレクトリ指定がなくてもコンパイルできるはずです。