gpt4 book ai didi

gcc - 对clock_gettime、gcc 4.6 和cmake 的 undefined reference

转载 作者:行者123 更新时间:2023-12-04 11:42:24 24 4
gpt4 key购买 nike

我在 cmake 下遇到链接错误,在使用旧版 gcc 的系统上编译时没有该错误。

具体错误是“ undefined reference clock_gettime
但是 -lrt出现在命令行上。

我的 gcc 版本:

gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

cmake 版本 2.8.5

我通过 target_link_libraries 在我的 CMakeLists.txt 文件中包含所需的“-lrt”。
我可以看到它出现在编译器行中, make VERBOSE=1

我读过 gcc 4.6 对链接库在命令行上的位置很挑剔。

我该如何为 CMake 解决这个问题?

编辑:
链接线
Linking CXX executable ../bin/obbsd
cd /home/matt/Desktop/Matt/OBBS/Build/server && /usr/bin/cmake -E cmake_link_script \
CMakeFiles/obbsd.dir/link.txt --verbose=1
/usr/bin/c++ -g CMakeFiles/obbsd.dir/Block.cpp.o \
CMakeFiles/obbsd.dir/BlockFileCache.cpp.o \
CMakeFiles/obbsd.dir/BlockFileStore.cpp.o \
CMakeFiles/obbsd.dir/BlockMemoryCache.cpp.o \
CMakeFiles/obbsd.dir/BlockStore.cpp.o CMakeFiles/obbsd.dir/Config.cpp.o \
CMakeFiles/obbsd.dir/DeleteBlockSession.cpp.o \
CMakeFiles/obbsd.dir/mConfigFile.cpp.o \
CMakeFiles/obbsd.dir/mNetworkPacketReader.cpp.o \
CMakeFiles/obbsd.dir/mNetworkPacketWriter.cpp.o \
CMakeFiles/obbsd.dir/obbsd.cpp.o \
CMakeFiles/obbsd.dir/ReadBlockSession.cpp.o CMakeFiles/obbsd.dir/Server.cpp.o \
CMakeFiles/obbsd.dir/Session.cpp.o CMakeFiles/obbsd.dir/Utility.cpp.o \
CMakeFiles/obbsd.dir/WriteBlockSession.cpp.o -o ../bin/obbsd -rdynamic \
-lpthread -lrt ../lib/libLibUtil.a
../lib/libLibUtil.a(mTimer.cpp.o): In function `mTimer::GetTick()':
/home/matt/Desktop/Matt/OBBS/LibUtil/src/mTimer.cpp:108: undefined reference to
`clock_gettime'

当 LibUtil(什么是 libLibUtil.a)在 rt 之前时,为什么 ../lib/libLibUtil.a 出现在 -lrt 之后?

CMakeLists.txt 包括...
...
add_executable(obbsd ${SERVER_SOURCE_FILES})
find_package(Threads REQUIRED)
target_link_libraries(obbsd ${CMAKE_THREAD_LIBS_INIT} LibUtil rt)

最佳答案

您应该确保 -lpthread -lrt出现在您的库之后,例如 ../lib/libLibUtil.a

关于gcc - 对clock_gettime、gcc 4.6 和cmake 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9511422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com