微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – CMake链接错误pthread:启用多线程以使用std :: thread:不允许操作

我有一个像以前一样的错误
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片段工作正常.

我刚刚面临同样的问题.我这样的最终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})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐