2009-11-10 9 views
24

私は静的ライブラリをコンパイルするためにcode :: blocksを使用します。出力結果はlibstatic.aファイルです。 コンパイルされた関数を使用するためにライブラリにリンクするにはどうすればよいですか?Cで静的ライブラリにリンクする方法は?

(私はの#include「libstatic.a」を使用しようとしたが、私のプロジェクトはコンパイルされません)

答えて

42
cc -o yourprog yourprog.c -lstatic 

または

cc -o yourprog yourprog.c libstatic.a 
+0

私は2番目を試してみました。ありがとう。私もコード::ブロックが動作するように設定することができます。 :-) – root

7

あなたがすべき#include "libstatic.h"、すなわち、あなたのコード内で適切なヘッダファイルを使用する(あなたのコードは「doesnの理由だことtコンパイル)、入力ライブラリの1つとしてリンカーオプションにlibstatic.aへのパスを含めます。

このwebpageには、静的ライブラリへのリンクに関するいくつかの例があります。

gcc -I. -o jvct jvct.c libjvc.a 
+0

を使用し、純粋に静的にリンクするにはあなたに感謝。最終的に私はそれをcodeblocksでやってしまいました。#include .hファイルは.aファイルと同じ名前である必要はありません。 – root

2

私は私のメイクファイルにライブラリパスを設定する必要がありました。このような場合のためには使用できます。

gcc -o myapp main.c -L. -lstatic 
1
gcc -I. -o jvct jvct.c libjvc.a 
0

-static

cc -static yourprogram.c libstatic.a 
+0

これにより、コンパイラはlibcを含む_all_ライブラリに静的にリンクし、静的にリンクされたバイナリを生成することに注意してください。それはあなたが望むもの(またはそうでないもの)かもしれません。 – WGH

関連する問題