0

私はこれらのリンクを見てきました:これこれ と他の同様のもののカップル。ここで与えられた答えはどれも、機能しているメソッドではありません。

2 つのソース ファイルa1.ca2.c2 つのヘッダー ファイルa1.ha2.h. これらの両方のファイルにヘッダー ファイルを含めたい (a2.c から使用する必要がある関数があるため、a1.c に a2.c を含める)

含めました

#include "a1.h"  
#include "a2.h"

a1.c のソース ファイル内

UbuntuでGCCを使用しています。コマンドを使用してgcc a1.h -o a1.out -lm も機能しませんでした。

で試しました

gcc -c -I/Home/Documents/ctests/ a1.c -o a1.out

としても

gcc -c a1.c -I/Home/Documents/ctests/ -o a1.out

私のスペルも問題ありません (とにかく、ファイル名が 1 つの文字と数字であるため、エラーの余地はほとんどありません)。

また、すべてのファイルは同じフォルダーにあります。

これは些細な質問かもしれませんが、私はこれに固執しており、助けていただければ幸いです。コマンドラインの使用に関しては、プログラミングは比較的新しく、Linux と Unix はまったくの初心者です。

どうもありがとう!

4

3 に答える 3

4
gcc -c

gcc にファイルをオブジェクト (どこにでもある .o ファイル) にコンパイルするように指示します。後で他の .o ファイルとリンクして実行可能ファイルにします。

したがって、2 つのファイルを別々にコンパイルし、後でリンクする必要があります。このような。

gcc -I"/Home/Documents/ctests/" -c a1.c
gcc -I"/Home/Documents/ctests/" -c a2.c

gcc -o myprogram a1.o a2.o 

または、コンパイルとリンクを同時に行うだけです。

gcc -I"/Home/Documents/ctests/" a2.c a1.c -o myprogram

そして、次のようにプログラムを実行します

path_to/myprogram 
于 2013-04-01T14:02:24.413 に答える
1

すべてをコンパイルし、一緒にリンクします。

すべてのファイルが 1 つのディレクトリにある場合、これは機能するはずです。

  gcc a1.c a2.c -o myapp

個別のオブジェクト ファイルを作成する場合は、次のようにします。

  gcc -c a1.c a2.c

次に、一緒にリンクしてアプリケーションを作成できます。

  gcc a1.o a2.o -o myapp
于 2013-04-01T14:04:46.030 に答える
0

gcc コマンドは次のようになります。

gcc -I/Home/Documents/ctests/ -o a1.out a1.c

そして、このようa1.ha2.hヘッダーファイルをインクルードする必要がありますa1.c

#include "a1.h"
#include "a2.h"

から何らかの関数を呼び出す場合は、この方法でプログラムを構築する必要がありa2.cますa1.c

gcc -I/Home/Documents/ctests/ -o a1.out a2.c a1.c
于 2013-04-01T14:04:42.783 に答える