2012-05-08 15 views
0

私はC/C++を初めて使いました。この簡単な質問があります。私はコンパイルのコマンドを入力するときにライブラリをリンクする必要があるかどうかわかりません。私が正しければ、パラメータ-lの後にインクルードしたいライブラリの名前を追加します。しかし、例えばC言語の数学ライブラリで作業している場合、私のプログラムをコンパイルするために-lathのようなものを追加していますか?または、どこか読んでいるときにCの外部ライブラリを使用しているときだけ必要ですか? C外部ライブラリとは何ですか?誰も私にこれを説明できますか?ありがとうございました。いつC言語でライブラリをリンクする必要がありますか?

答えて

4

ほとんどのコンパイラは、リンク時にデフォルトで言語の標準ライブラリを含みます。 gccにはC標準ライブラリ(libc)が含まれ、g ++にはC++標準ライブラリ(libC++)が追加されます。いくつかのシステムでは、数学には-lm、リアルタイム拡張には-lrtを追加しているかもしれませんが、それらのライブラリはしばしばコア言語外の機能を追加します。

1

数学は標準ライブラリの一部なので、リンクする必要はありません。他のすべてはリンクされるべきです。 (編集:以下のコメントをチェックしてください)

たとえば、コードprintf、strcmp、およびpthread_createで使用する場合、printfとstrcmpには何もリンクする必要はありません。ちょうど右のヘッダーを含めると、あなたは大丈夫です。しかし、pthread_createは標準ライブラリの一部ではないので、それにリンクする必要があります。-lpthread。

+4

標準の数学関数を使用するには、数学ライブラリにリンクする必要があることがあります。 –

+0

さて、正しい。私はmath.hの関数について話していると思っていましたが、これは私が知っている限り標準ライブラリの一部です。 –

+0

Solaris(たとえば)では、math.h関数はlibmを明示的にリンクする必要があります。 – Joe

関連する問題