お忙しいところすみません。
 Cでちょっと教えていただけますでしょうか。 
 
 [m-hinata@NGNserver04 070801_sample]$ cat 1.c
 #include <stdio.h>
 #include "sample.h"
 int main(){
         int a;
         a =func_a();
         printf ("main shuuryou\n");
         return a;
 
 }
 [m-hinata@NGNserver04 070801_sample]$ cat 2.c
 #include <stdio.h>
 #include "sample.h"
 int func_a (){
         int a;
         printf ("func yobareta\n");
         return a;
 
 }
 [m-hinata@NGNserver04 070801_sample]$ cat include/sample.h
 [m-hinata@NGNserver04 070801_sample]$ cat include/sample.h_ari
 int func_a();
 [m-hinata@NGNserver04 070801_sample]$ gcc -c 1.c -I./include
 [m-hinata@NGNserver04 070801_sample]$ gcc -c 2.c -I./include
 [m-hinata@NGNserver04 070801_sample]$ gcc -o jikkou *.o
 [m-hinata@NGNserver04 070801_sample]$ ./jikkou
 func yobareta
 main shuuryou
 [m-hinata@NGNserver04 070801_sample]$ rm -rfd jikkou 2.o
 [m-hinata@NGNserver04 070801_sample]$ gcc -o jikkou *.o
 1.o(.text+0xe): In function `main':
 : undefined reference to `func_a'
 collect2: ld はステータス 1 で終了しました 
 
 ↑コンパイルエラーとリンクエラーについて確認したくて、
 ・bodyがなければ"undefined reference"リンクエラー
 ・ヘッダに記述がなければ.oをつくるときにコンパイルエラー
 を期待していたのですが、
 前者はOKで、後者は、sample.hでも、sample.h_ariをsample.hにmvして実行しても同じく.oが作成されてしまいます。
 これはどうしてでしょうか。
 1.c内にはfunc_aの定義がないので、コンパイルエラーになるかと思ったのですが。。


----
- 分割コンパイルとリンケージ http://www.cc.kyoto-su.ac.jp/~hxm/cstext/prog06.html --  &new{2007-08-01 (水) 10:20:47};
- ちなみにgccでコンパイルするときに-Wオプションと-Wallオプションをくつけたらどうなる? -- [[o]] &new{2007-08-01 (水) 12:05:59};
- ちなみにgccでコンパイルするときに-Wオプションと-Wallオプションをくつけたらどうなる? -- [[o]] &new{2007-08-01 (水) 13:43:06};
- おっと失礼 リロードしちゃいました -- [[o]] &new{2007-08-01 (水) 13:43:49};
- ありがとうございます!きました!!「1.c:5: 警告: 関数 `func_a' の暗黙の宣言」 -- [[日向充]] &new{2007-08-01 (水) 13:45:46};

#comment
----
-[[メモメモ]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS