質問

私はUbuntuのにかなり新しいですが、私はこの仕事を得るように見えることはできません。それは私の学校のコンピュータ上で正常に動作し、私は私がやっていないのですか分かりません。私がチェックしているの USR /含めるをTIME.Hだけで結構あります。ここでは、コードは次のとおりです。

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    timespec time1, time2;
    int temp;
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
    //do stuff here
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
    return 0;
}

私もビルドして実行するために私のIDEとしてのコードブロックを使用しています。すべてのヘルプは素晴らしいことだ、あなたに感謝します。

役に立ちましたか?

解決

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

他のヒント

例:

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

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

一部の古いgccバージョンが位置を気にしません。

私は、同じエラーが発生しました。 RTライブラリを持っていなかった私のリンカ・コマンドは正しいです-lrtを含め、それはしばらくの間働いていました。再インストールKubuntuの後にそれが動作を停止します。

別のフォーラムのスレッドは、プロジェクトのオブジェクト・ファイルの後に来るために必要な-lrtを示唆しました。 私はなぜの詳細は分からないが、コマンドの最後に-lrtを移動すると、私のために、この問題を修正します。

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が必要になります。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top