2016-12-26 1 views
2

に1つのCファイル以上をコンパイル:AC私は2つのファイル持っている単一の非実行可能なオブジェクト・ファイル

Bcの

の両方彼らは主な機能を持っていません。 私はそれらをコンパイルし、D.oという名前の1つの非実行可能ファイルにリンクすることはできますか?

+0

は、あなたはいつもの両方が含まれる第三のCソースファイルを作成し、第三のコンパイル – 0x90

+0

include' '#を使用して別のCファイルを含めることができます。 @ 0x90よりも良いかもしれませんか?または、libを作成します。 –

+0

@ 0x90いいえ、できません(たとえば、両方のファイルがローカル静的変数に同じ名前を使用していても、他の場合もあります)。 – yugr

答えて

5

あなたは最初のオブジェクトファイルを分離し、その後ld -rを経由して保存、再配置可能な情報と、それらをリンクするためにそれらをコンパイルすることができます

ld -r tmp1.o tmp2.o -o tmp.o 
1

あなたは非実行可能ファイルを使用する場合は、@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 
+1

これはどのように関連していますか? OPは、実行不可能な出力を明示的に求めた。 – yugr

+0

申し訳ありませんが、私はそれを見ませんでした。 – UrbiJr

関連する問題