【发布时间】:2021-04-29 08:38:52
【问题描述】:
我想重建一个基于 .cpp、一个 .h 和多个 .so 文件的简单应用程序。从我所见,我的 CMakeLists.txt 应该是这样的:
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 11)
project(test C CXX)
add_executable(${PROJECT_NAME} main.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}/lib)
target_link_libraries(test ${CMAKE_SOURCE_DIR}/libA.so ${CMAKE_SOURCE_DIR}/libB.so)
所有文件都在同一个文件夹中。我之前将我的 .cpp 与我的 .h 文件正确链接。 cmake . 没有给我任何错误,但是在使用 make 之后我得到了:
main.cpp:(.text+0xf2d) : undefined reference to « pthread_create »
这是一个不属于我的 .h 文件的函数,所以它应该在 .so 文件中。我不知道问题是来自链接还是文件 .so 本身。
我也有同名的文件,例如 libA.so、libA.so.0 或 libA.so.0.2,我应该在我的可执行文件中包含所有这些文件吗?
【问题讨论】:
-
需要连接pthreads,将
pthread库添加到target_link_libraries。它与您的其他.so文件无关(很可能)。
标签: c++ cmake ubuntu-18.04