我希望重构一个基于 .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,我应该将所有这些文件都包含在我的可执行文件中吗?
pthread
库添加到target_link_libraries
中。这很可能与你的其他.so
文件无关。 - Kuba hasn't forgotten Monica