Linux中编译带clock_gettime函数的代码,提示undefined reference to 'clock_gettime'
程序员文章站
2024-02-26 19:48:58
...
今天在Linux服务器上提交的C++代码中调用了clock_gettime,编译时报错如下:
mkdir -p dist/Debug/GNU-Linux
g++ -o dist/Debug/GNU-Linux/zceapi_linux_demo build/Debug/GNU-Linux/APKpkgTofile.o build/Debug/GNU-Linux/CallBack.o build/Debug/GNU-Linux/Demo.o -W1,-rpath,'/usr/lib' -lZCEFTDAPI -ldl
build/Debug/GNU-Linux/Demo.o: In Funcion 'main':
Demo.cpp:(.text+0x23):undefined reference to 'clock_gettime'
Demo.cpp:(.text+0x54):undefined reference to 'clock_gettime'
collect2:error: ld returned 1 exit status
网上查找原因,提示clock_gettime编译时需要加入-lrt。考虑的解决方法是:
一、临时解决
根据编译的提示,进入到相应的目录中,直接将g++的编译命令后面加上-lrt,编译成功执行。如下:
g++ -o dist/Debug/GNU-Linux/zceapi_linux_demo build/Debug/GNU-Linux/APKpkgTofile.o build/Debug/GNU-Linux/CallBack.o build/Debug/GNU-Linux/Demo.o -W1,-rpath,'/usr/lib' -lZCEFTDAPI -ldl -lrt
二、修改netbean配置项
netbean中选中该项目,右键选择【设置配置】---【定制】。弹出的项目属性对话框中选择【构建】--【链接器】,右边显示框中选择【编译行】--【其他选项】中加入-lrt,如下:
接下来在项目上右键【构建】,就可以编译成功了。