[解決済み] Makefileのインクルードヘッダー
2022-02-06 05:18:54
質問
私はLinuxプログラミングの初心者で、簡単なテスト構築をコンパイルしようとしました。しかし、コンパイル時にエラーが発生します。inc.cも(app:の行に)追加してもうまくいきません。どのように私は正しいファイルを含めるべきでしょうか?
Makefileを参照してください。
app: main.c inc.h
cc -o app main.c
端末です。
make
cc -o app main.c
/tmp/ccGgdRNy.o: In function `main':
main.c:(.text+0x14): undefined reference to `test'
collect2: error: ld returned 1 exit status
make: *** [app] Error 1
main.c:
#include <stdio.h>
#include "inc.h"
int main()
{
printf("Kijken of deze **** werkt:\n");
test();
getchar();
return 0;
}
inc.h
#ifndef INCLUDE_H
#define INCLUDE_H
void test();
#endif
inc.c
#include <stdio.h>
void test()
{
printf("Blijkbaar wel!");
}
解決方法は?
コンパイルユニットに対してリンクする必要があります
inc.o
をコンパイルして得た
inc.c
.
一般に、このことは、以下の関数が含まれるすべてのオブジェクトファイルを提供しなければならないことを意味します。
main.c
(推移的に)。の暗黙のルールでこれらをコンパイルすることができます。
make
余計なルールを指定する必要はありません。
と言えるでしょう。
app: main.c inc.o inc.h
cc -o app inc.o main.c
そして
make
をどのようにコンパイルするかは、自分自身で知ることができます。
inc.o
から
inc.c
しかし、それは
ない
取る
inc.h
を決定する際に考慮されます。
inc.o
をリビルドする必要があります。そのためにあなたは
する
は、独自のルールを指定する必要があります。
関連
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】Makefileの中の.PHONYの目的は何ですか?
-
[解決済み】 「配列のイニシャライザーはイニシャライザーリストまたは文字列リテラルでなければなりません」と表示されるのですが?
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み】MPI通信でMPI_Bcastを使用する場合
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み] GNU Makefile の変数割り当て =, ?=, :=, += の違いは何ですか?
-
[解決済み] makefile の記号 $@ と $< はどういう意味ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】ポインタと整数の比較で警告が出る
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み】argv[]をint型として取得するには?
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。