2012-05-04 10 views

答えて

1

.aファイルは既にコンパイル済みのライブラリです。 .cファイルを.oにコンパイルすると、リンカを使用して.oと.aをリンクし、実行可能ファイルが生成されます。あなたはおそらくこれを行うことができ、簡単な例については

+3

*どのように*するかについての質問には答えません。 「どのように見えるか」とは言わない。 – mtahmed

14

gcc -o maybe.exe useful.a something.c 

Makefileの非自明なプロジェクトのために、通常、最初の.oオブジェクトにそれぞれの.cファイルをコンパイルするためのgccを起動します。

gcc -c something.c 

それから、彼らは、出力実行可能ファイルにリンクするの.oと.aのファイルのリストを(これらの日は、多くの場合、それのラッパーとしてのgccを使用して)リンカーを起動します。

gcc -o maybe.exe useful.a something.o 

注意また、そのほとんどのインストールされたライブラリについて、それが明示的.Aファイルを指定する代わりに「構成された中でlibhandy.aと呼ばれるものを見つけようとするために短いものと思われる-lhandyを言っていない典型的なのです(または

gcc -L<here comes the library path> -l<library name> 

は、現在ではlibname.aを持っているファイルに対して例えば

(Windowsの場合 *.dllとLinuxで *.so)-L)検索ディレクトリ」

+0

オブジェクトファイル生成のエラーをキャッチする匿名のおかげで –

4

*.aで動的な静的ライブラリではなく、指定しますパスあなたが使用する必要があります。

gcc *.c -L. -lname -o myprogram.o 

man(シェルコマンドプロンプトで男のgccを置く)

からあなたはオプションと他の引数を混在させることができます。ほとんどの場合、使用する注文 は関係ありません。同じ種類のいくつかのオプションを使用すると、注文は問題ありません。 たとえば、-Lを複数回指定すると、指定された順序で ディレクトリが検索されます。また、-lオプションの配置 も重要です。

+0

'gcc -l <​​ここではライブラリパスが来る> -g <ライブラリ名>' -l <​​ライブラリ名> > '。あなたが意味することを願っています –

+0

なぜライブラリが 'libname.a'ならば' -lname'を使うのですか? – this

+0

http://gcc.gnu.org/onlinedocs/gcc/Link-Options.htmlを読む – 0x90

関連する問題