我使用以下函数来获取多线程程序的执行时间:
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
的原因。