例:
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
が必要です) .)