对 `pthread_create' CLion 的未定义引用
undefined reference to `pthread_create' CLion
我正在尝试使用 CLion 在 Linux (Ubuntu) OS.
下编译我的程序
我的 CMake 文件:
# cmake_minimum_required(VERSION 3.5)
project(untitled2 C)
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_FLAGS -pthread)
add_executable(untitled2 main.c)
我的程序使用线程,所以 我添加了 set(CMAKE_CXX_FLAGS -pthread)
来编译我的程序。
我得到一个编译错误:"undefined reference to pthread_create"
我可以使用以下命令通过终端编译程序:
gcc main.c -o main -pthread
我认为我的问题出在 CMake 文件上。
有人可以帮我解决这个问题吗?
谢谢!
您必须在 set(CMAKE_C_FLAGS -pthread)
中更改 set(CMAKE_CXX_FLAGS -pthread)
,因为 CXX 保留用于 C++。希望这会帮助你。
我可能仍然不是最佳选择,但可以调用
find_package(Threads REQUIRED)
结合
target_link_libraries(mytarget PRIVATE Threads::Threads)
是实现目标的更现代的方式,因为您应该对目标执行操作(而不是使用可能影响项目其他部分甚至包含拼写问题的 'magic' 变量)。
将此添加到 CMakeLists 对我来说效果很好:
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(myprog Threads::Threads )
我正在尝试使用 CLion 在 Linux (Ubuntu) OS.
下编译我的程序我的 CMake 文件:
# cmake_minimum_required(VERSION 3.5)
project(untitled2 C)
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_FLAGS -pthread)
add_executable(untitled2 main.c)
我的程序使用线程,所以 我添加了 set(CMAKE_CXX_FLAGS -pthread)
来编译我的程序。
我得到一个编译错误:"undefined reference to pthread_create"
我可以使用以下命令通过终端编译程序:
gcc main.c -o main -pthread
我认为我的问题出在 CMake 文件上。 有人可以帮我解决这个问题吗?
谢谢!
您必须在 set(CMAKE_C_FLAGS -pthread)
中更改 set(CMAKE_CXX_FLAGS -pthread)
,因为 CXX 保留用于 C++。希望这会帮助你。
我可能仍然不是最佳选择,但可以调用
find_package(Threads REQUIRED)
结合
target_link_libraries(mytarget PRIVATE Threads::Threads)
是实现目标的更现代的方式,因为您应该对目标执行操作(而不是使用可能影响项目其他部分甚至包含拼写问题的 'magic' 变量)。
将此添加到 CMakeLists 对我来说效果很好:
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(myprog Threads::Threads )