我使用以下函数来获取多线程程序的执行时间:

clock_gettime(CLOCK_MONOTONIC,&start);
/*
******PROGRAM CODE*************
*/

clock_gettime(CLOCK_MONOTONIC,&end);

在运行ubuntu 14.04的PC笔记本电脑上,它运行良好,但是当我尝试在服务器上编译并运行它时,编译失败并给出了错误。

在我的PC笔记本电脑上:
laksith@laksithPC:~/Desktop/test$ gcc main_v8.c -lpthread
laksith@laksithPC:~/Desktop/test$ ./a.out

在服务器上:
[laksith@gca test_run]$ gcc main_v8.c -lpthread
/tmp/ccyMMmx.o:In function 'main':
main_v8.c:(.text+0x21):undefined reference to 'clock_gettime'
main_v8.c:(.text+0x182):undefined reference to 'clock_gettime'
collect2: ld returned 1 exit status

有人可以帮我吗?

最佳答案

这只是一个链接错误-您需要链接librt-更改:

gcc main_v8.c -lpthread

至:
gcc -Wall main_v8.c -lpthread -lrt

请注意,这在Linux man page for clock_gettime 中涉及:



请注意,较新版本的glibc(> = 2.17)不再需要与librt链接,这可能解释了为什么您无需在PC上为Ubuntu 14构建添加-lrt的原因。

10-08 14:35