math.hを使用するCプログラムをコンパイルする方法


14

math.hヘッダーファイルに問題があり、のように平方根関数を使用すると問題が発生しますsqrt(d)。しかし、私のコンパイラはこれをサポートしていません。この問題について教えてください。

Ubuntuバージョンは2012です。


2
私たちはプログラミングの質問が大好きですが、質問はUbuntuに関連している必要があります-問題がここにあることを詳細に明確にできますか?例など?
fossfreedom

それはsqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))のようなものです...私のコンパイラはこのコマンドをサポートしていません
shreya

1
質問を編集して返信してください。コード例、コンパイル方法、ubuntuのバージョン、コンパイラのバージョンを示して、別のコンパイラ/ディストリビューションでこれを実行しようとしましたか。何が起こるなど?
fossfreedom

1
@shreya作成したコードの問題に関する質問は、質問自体に特定の問題を記述し、それを再現するための有効なコードを含める必要があります。ガイダンスについては、SSCCE.orgを参照してください。
Braiam

3
これはトピックから外れているとは本当に思わない。Windowsなどの他の多くのOSでは、Cプログラムで数学ライブラリを使用するために特別なリンカーオプションを渡す必要はありません。一部のUnixライクなオペレーティングシステムでさえ、標準Cライブラリの実装ではこれを必要としません。これは、UbuntuなどのGNU / Linuxシステムに切り替えるときに多くのユーザーが直面する問題です。質問が特定のエラーを含むように書かれた方がいいと思います-このトピックを検討したら、おそらく編集する必要があります-しかし、これは一般的なCプログラミングの質問ではなく、gccUbuntuでの使用方法に関する質問です。
エリアケイガン

回答:


24

コマンド-lmの最後に追加しますgcc

UbuntuのようなGNU / Linuxシステム上のGCCのすべての最新バージョンでは、数学ライブラリを使用する場合、明示的にリンクする必要があります。他の標準Cライブラリと一緒に自動的にリンクされることはありません。

コマンドラインでgccor g++コマンドを使用してコンパイルしている場合、コマンドの最後に配置すること-lmこれを実現できます。

例えば: gcc -o foo foo.c -lm


4

GCCまたはG ++を使用してLINUX でmath.hライブラリを使用してCプログラムをコンパイルする場合、コンパイルコマンドの後に-lmオプションを使用する必要があります。

gcc xyz.c -o xyz -lm

ここに、

gccはコンパイラーコマンド(コンパイラー名)
xyz.cはソースファイル名です。
-oは、出力ファイルを指定するオプションです。
xyzは出力ファイルの名前です。
-lmは、数学ライブラリ(libm)に再度リンクするオプションです。

詳細については、完全な記事を含むリンクをご覧ください。
Linuxでmath.hを使用してCプログラムをコンパイルします。


コンパイルコマンドではなく、リンクコマンドの後。(ニックピッキングはごめんなさい、しかしそれを正しくすることは他の状況を理解するのに役立つ)。
-mousomer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.