GNU/Linux >> Linux の 問題 >  >> Linux

C++ エラー:'clock_gettime' および 'clock_settime' への未定義の参照

例:

c++ -Wall filefork.cpp -lrt -O2

gcc の場合 バージョン 4.6.1、-lrt でなければなりません filefork.cpp そうしないと、リンク エラーが発生します。

いくつかの古い gcc バージョンは位置を気にしません。


-lrt を追加 g++ コマンドラインの最後まで。これは、librt.so「リアルタイム」共有ライブラリにリンクしています。


glibc バージョン 2.17 以降、-lrt をリンクするライブラリ は不要になりました。

clock_* メインの C ライブラリの一部になりました。この変更が行われた glibc 2.17 の変更履歴を見ると、この変更の理由が説明されています。

+* The `clock_*' suite of functions (declared in <time.h>) is now available
+  directly in the main C library.  Previously it was necessary to link with
+  -lrt to use these functions.  This change has the effect that a
+  single-threaded program that uses a function such as `clock_gettime' (and
+  is not linked with -lrt) will no longer implicitly load the pthreads
+  library at runtime and so will not suffer the overheads associated with
+  multi-thread support in other code such as the C++ runtime library.

glibc をアップグレードすることに決めた場合、新しい glibc を使用して問題が発生するかどうか心配な場合は、glibc の互換性トラッカーを確認できます。

システムにインストールされている glibc のバージョンを確認するには、次のコマンドを実行します:

ldd --version

(もちろん、古い glibc (<2.17) を使用している場合は、まだ -lrt が必要です) .)


Linux
  1. Centos4.8およびGlibc2.5?

  2. C++ で C 関数を呼び出す方法、C で C++ 関数を呼び出す方法 (C と C++ の混合)

  3. Linux c++ エラー:'dlopen' への未定義の参照

  1. MPIコンパイルエラー: `sqrt'への未定義の参照–解決済み

  2. C++ Boost:boost::system::generic_category() への未定義の参照

  3. シンボル '_ZN5boost6system15system_categoryEv' エラーへの未定義参照

  1. 未定義の関数simplexml_load_file()の呼び出し–PHPエラー[解決済み]

  2. トラップ、エラー、およびエラーラインのエコー?

  3. CodeBlocks –無料のクロスプラットフォームC、C ++、Fortran IDE