[解決済み] Ubuntuで、gccと-lmでリンクするとceil()が定義されない。
質問
現在gccでコンパイルしていますが
<math.h>
.
問題は、ライブラリが認識されないことです。
また
-lm
と表示され、何も表示されません。
私が使おうとした関数は
ceil()
と表示され、以下のエラーが発生します。
: undefined reference to `ceil'
collect2: ld returned 1 exit status
最新のUbuntuを使用しており、math.hはあります。
私は
-lm
を別のコンピュータで使用したところ、完全に動作しました。
この問題を解決する方法をご存知の方はいらっしゃいますか?
私は
<math.h>
. また、使用したコマンドは
gcc -lm -o fb file.c
解決方法は?
このコードをファイルに保存してください。
ceil.c
:
#include <math.h>
#include <stdio.h>
int main(void)
{
printf("%f\n", ceil(1.2));
return 0;
}
でコンパイルしてください。
$ gcc -o ceil ceil.c
$ gcc -o ceil ceil.c -lm
この2つのうち、どちらかが動作するはずです。 どちらも動作しない場合は、それぞれのコンパイル時のエラーメッセージをすべて表示します。 以下のことに注意してください。
-lm
はソースファイル名(ソースをオブジェクトにコンパイルしてからリンクした場合はオブジェクトファイル名)の後に表示されます。
注意事項
-
最近のコンパイラは、2.0を直接
printf()
を呼び出すことなくceil()
を実行時に全く使用しないので、数学ライブラリは全く必要ありません。 -
ルールオブサム オブジェクトファイルやソースファイルをライブラリより先にコマンドラインにリストアップします。 この回答では、使用中
-lm
はソースファイルの後に来るceil.c
. でビルドしている場合はmake
などを使用する場合、通常はceil.o
をコマンドラインで (他のオブジェクトファイルと一緒に) 表示します。通常、ライブラリの前にすべてのオブジェクトファイルを表示する必要があります。
しかし、それは稀なケースであり、例外が予想される/要求される特定のケースについて文書化されるでしょう。 例外を示す明確な文書がない場合は、経験則を適用してください。
関連
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み】GCC Cコードで静的宣言が非静的宣言に続くことを解決するには?
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み】malloc():メモリ破壊
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない
-
[解決済み】配列型char[]が代入できない [重複]。
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
-
[解決済み] テスト
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み】スタックスマッシュを検出しました
-
[解決済み】なぜか。"エラー: 配列型を持つ式への代入"
-
[解決済み】宣言指定子で2つ以上のデータ型がある場合のエラー【非公開
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない