2016-06-28 5 views
1

Cプログラム用のライブラリを作成しました。これにはスレッドが含まれています。私は通常Code :: Blocksを使って作業しますが、問題は一度もありませんでしたが、今では端末から直接プログラムをコンパイルする必要があります。私は-lpthreadと書く必要があることを知っただけでなく、私のライブラリ名(その名前はmy_lib.hです)も書きました。私はgcc my_lib.c -cでライブラリをコンパイルしようとしましたが、これはうまくいきます。その後、私はこれを試しましたgcc main.c my_lib.h -o main -lpthread、これは動作しません。スレッドを含む個人用ライブラリを使用してCプログラムをコンパイルする方法

したがって、my_lib.hを使用するこのプログラムをコンパイルするための正しいsintaxは何ですか?

+1

.hファイルを引数としてコンパイラに渡さないでください。 「うまくいきません」は役に立たない声明です。あなたのコンピュータは爆発しましたか、それともジャガイモに変わりましたか?これらは、2つの非常に異なる失敗モードです。 –

+0

2番目のステップはリンクと呼ばれ、my_lib.hの代わりにmy_lib.oが必要です –

答えて

2

私はmy_lib.cが共有ライブラリではなくモジュール(オブジェクトファイル)であると仮定します。

コンパイルは、2つの部分から構成 - オブジェクトファイルにコンパイルして、リンク:

# compiling (note the -c) 
gcc -c my_lib.c 
gcc -c main.c 
# linking (no -c, just specify target with -o) 
gcc -o main main.o my_lib.o -lpthread 

ヘッダファイルがコンパイルされることはありません(明示的に)、彼らはただ.cファイルから含まれ、したがって、.oファイルが生成されることはありません。

+0

これは機能します!ありがとうございました! – salvo9415

関連する問題