我有一个像以前一样的错误
C++ Threads,std::system_error – operation not permitted?
C++ Threads,std::system_error – operation not permitted?
我正在使用完全相同的源代码并进行编译
g++ ../src/main.cpp -pthread -std=c++11
工作没有任何问题.
因为我想在更大的项目中使用线程,所以我必须使用CMake的线程.在搜索解决方案后,我发现了几个代码,例如:
cmake_minimum_required (VERSION 2.6) project (Test) add_definitions("-std=c++11") find_package (Threads) add_executable (main src/main.cpp) target_link_libraries (main ${CMAKE_THREAD_LIBS_INIT})
但对我而言,我总是这样做不起作用:
terminate called after throwing an instance of 'std::system_error' what(): Enable multithreading to use std::thread: Operation not permitted Aborted (core dumped)
我的错是什么?
CMake输出看起来很有希望:
-- The C compiler identification is GNU 4.8.2 -- The CXX compiler identification is GNU 4.8.2 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Looking for include file pthread.h -- Looking for include file pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - not found -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE -- Configuring done -- Generating done
解决方法
编辑:
我现在正在使用GCC 5.4,有问题的cmake片段工作正常.
我现在正在使用GCC 5.4,有问题的cmake片段工作正常.
我刚刚面临同样的问题.我这样的最终cmakelist.txt文件,它的工作原理.
cmake_minimum_required (VERSION 2.6) project (Test) SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++11 -pthread") find_package (Threads) add_executable (main src/main.cpp) target_link_libraries (main ${CMAKE_THREAD_LIBS_INIT})