に1つのCファイル以上をコンパイル:AC私は2つのファイル持っている単一の非実行可能なオブジェクト・ファイル
を
と
Bcの
の両方彼らは主な機能を持っていません。 私はそれらをコンパイルし、D.oという名前の1つの非実行可能ファイルにリンクすることはできますか?
に1つのCファイル以上をコンパイル:AC私は2つのファイル持っている単一の非実行可能なオブジェクト・ファイル
を
と
Bcの
の両方彼らは主な機能を持っていません。 私はそれらをコンパイルし、D.oという名前の1つの非実行可能ファイルにリンクすることはできますか?
あなたは最初のオブジェクトファイルを分離し、その後ld -r
を経由して保存、再配置可能な情報と、それらをリンクするためにそれらをコンパイルすることができます
ld -r tmp1.o tmp2.o -o tmp.o
あなたは非実行可能ファイルを使用する場合は、@yugrソリューションだけで結構です。ただし、必要でない場合は、複数のファイルをリンクして1つのオブジェクトファイルを作成する方法があります。
GCC:-o
がオブジェクトファイルの名前を指定するために使用されていることを
gcc -o d.o a.c b.c
注意。
しかし、もっと良いことをしたいのであれば、makefileを見て、ソースファイルごとにオブジェクトファイルを作成して一緒にコンパイルする必要があります。
リトル例:
exe: a.o b.o
gcc -o exe a.o b.o
a.o: a.c
gcc -c a.c
b.o: b.c
gcc -c b.c
は、あなたはいつもの両方が含まれる第三のCソースファイルを作成し、第三のコンパイル – 0x90
include' '#を使用して別のCファイルを含めることができます。 @ 0x90よりも良いかもしれませんか?または、libを作成します。 –
@ 0x90いいえ、できません(たとえば、両方のファイルがローカル静的変数に同じ名前を使用していても、他の場合もあります)。 – yugr