Ошибка Ubuntu Linux С++: undefined ссылка на 'clock_gettime' и 'clock_settime'

Я новичок в Ubuntu, но я не могу заставить это работать. Он отлично работает на моих школьных компьютерах, и я не знаю, чего я не делаю. Я проверил usr/include, а 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;
}

Я использую CodeBlocks в качестве моей IDE для сборки и запуска. Любая помощь будет отличной, спасибо.

132
10 марта '10 в 18:36
источник поделиться
4 ответов

Добавьте -lrt в конец командной строки g++. Это ссылки в общей библиотеке librt.so "Real Time".

246
10 марта '10 в 18:38
источник

Связанные вопросы


Похожие вопросы

Пример:

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

Для gcc версии 4.6.1 -lrt должен быть после filefork.cpp, иначе вы получите сообщение об ошибке.

Некоторая старая версия gcc не заботится о позиции.

40
11 нояб. '11 в 4:48
источник

Я столкнулся с той же ошибкой. Моя команда компоновщика имела библиотеку rt, включенную -lrt, которая верна, и она работала некоторое время. После повторной установки Kubuntu он перестает работать.

Отдельная тема форума предложила -lrt, которая должна появиться после файлов объектов проекта. Перемещение -lrt до конца команды исправило эту проблему для меня, хотя я не знаю подробностей о том, почему.

25
10 нояб. '11 в 13:53
источник

Поскольку glibc 2.17, библиотека, связывающая -rt, больше не требуется.

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.)

20
18 сент. '15 в 13:05
источник

Посмотрите другие вопросы по меткам или Задайте вопрос