重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

現在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()が定義されていないと出るのでまったくわかりません・・・。

A 回答 (1件)

print()がprint.cに記述してあることは


どこの書いているのでしょう?

あなたは作った本人だから知っているけど、
コンピュータにはわかりません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/11/20 23:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!