みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

linuxにおけるCの自作ヘッダファイル

現在C言語のしっかりと学ばなかった部分を学習したいと思い、自作ヘッダファイルの作成を勉強しています。
そこで、書籍のその章を一通り読んだあと、自分で簡単なものを作成してみましたが、エラーが出てうまくいきません。
どうしてかわかる方いたら教えてください。

コード
*****main.c*****
#include "print.h"

int main(void)
{
print();

return 0;
}

*****print.c*****
#include <stdio.h>

void print(void)
{
printf("test\n");
}

*****print.h*****
extern void print(void);


エラー
/tmp/ccH551c1.o: In function `main':
/home/ユーザ名/Documents/StudyC/main.c:5: undefined reference to `print'
collect2: ld returned 1 exit status

CentOS6.6にて端末上での実行です。
自分の解釈では、""でincludeすることでカレントディレクトリから目的のヘッダファイルを見つけ出してインクルードする、また、ヘッダファイル内でexternすることによってprint.cから目的の関数を定義しているので、main.cでは問題なく使えると思っています。
しかし、エラーではprint()が定義されていないと出るのでまったくわかりません・・・。

投稿日時 - 2014-11-20 22:27:06

QNo.8831887

困ってます

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

print()がprint.cに記述してあることは
どこの書いているのでしょう?

あなたは作った本人だから知っているけど、
コンピュータにはわかりません。

投稿日時 - 2014-11-20 22:48:23

お礼

回答ありがとうございました。
最初、回答を見てしばらく悩みましたが理解できました。
コンパイルの際、ずっとgcc -g -Wall -omain main.cと、main.cだけをコンパイル(とリンク)していたのが原因だったんですね。
まずオブジェクトファイルを作ってと、分割コンパイルに関する知識が薄かったです。

投稿日時 - 2014-11-20 23:08:38

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問