2 つの C ファイルがあります (最初のファイルには別のファイルが必要です)。
を使用する必要があります#include "XXX.C"
が、.obj ファイルを個別に作成してから接続するにはどうすればよいですか (Borland のプロジェクトのようなもの)。コマンドについて何か読んだことlink a, b
がありますが、機能せず、リファレンスが見つかりません。
ありがとうございました!
2 つの C ファイルがあります (最初のファイルには別のファイルが必要です)。
を使用する必要があります#include "XXX.C"
が、.obj ファイルを個別に作成してから接続するにはどうすればよいですか (Borland のプロジェクトのようなもの)。コマンドについて何か読んだことlink a, b
がありますが、機能せず、リファレンスが見つかりません。
ありがとうございました!
#include "XXX.C" は使用しないでください。個別にコンパイルする場合。呼び出したいすべての関数を含む「XXX.h」を作成する必要があります。
その後、ファイルを個別にコンパイルできます。
gcc -c YYY.c -o yyy.o
gcc -c XXX.c -o xxx.o
1 回のパスでコンパイルおよびリンクする場合:
gcc xxx.c yyy.c -o xxx
または、xxx.c をコンパイルして、以前に生成したオブジェクト ファイルを使用する場合:
gcc xxc.c yyy.o -o xxx
あるいは:
gcc xxx.o yyy.o -o xxx
最後の例では、コンパイルするソース コードがないため、gcc がリンカーを呼び出します。
しかし、2 つまたは 3 つ以上のファイルがある場合、次に確認することは Makefile の使用方法です。
例:
xxx.c:
#include "yyy.h"
int x(int a)
{
return a + 1;
}
int main(int argc, char **argv)
{
x(1);
y(2);
return 0;
}
yyy.c:
int y(int b)
{
return b + 2;
}
yyy.h:
#pragma once
int y(int b);
個別にコンパイルできます:
gcc -c yyy.c -o yyy.o
gcc xxx.c yyy.o -o xxx
この例では、xxx.c は yyy.c で定義された関数を呼び出します。
いいえ、使用しないでください#include "XXX.c"
。ヘッダーのみを含める必要があります。コード ファイルは、互いに別々にコンパイルする必要があります。
どのくらい正確に実行されるかはコンパイラによって異なりますが、通常は次のように、ファイルを 1 つずつコンパイラにリストするだけです。
gcc main.c helpers.c functions.c