Ошибка c++: неопределенная ссылка на 'часы, методов gettime и settime часы'



Я довольно новичок в Ubuntu, но я не могу заставить это работать. Он отлично работает на моих школьных компьютерах, и я не знаю, что я не делаю. Я проверил usr / include и времени.ч там просто отлично. Вот код:



#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 для сборки и запуска. Любая помощь была бы большой, спасибо.

808   4  

4 ответов:

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

пример:

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

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

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

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

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

начиная с glibc 2.17, библиотеки, соединяющей -rt больше не требуется.

The 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 (-lrt.)

Comments

    Ничего не найдено.