error de compilación: atomic no está implementado

3

Cuando compilo un programa de código abierto llamado gate con "make" tengo este mensaje de error:

  

error < atomic > no está implementado

Debo agregar que conozco este programa y lo compilé varias veces anteriormente sin ningún problema

Mi configuración se ve como:

sudo xcode-select --install 
which gcc
gcc --version

Corro en yosemite 10.10.5, xcode 7.1.1 y probé varias compilaciones con clang y gcc

    
pregunta Luc SIMON 29.11.2015 - 18:42

2 respuestas

1

En cuanto a la pregunta, las ediciones y los comentarios, es evidente que la configuración de la cadena del compilador y los encabezados es probablemente la causa. Puedes seguir intentando agregar cosas, pero yo tomaría una táctica diferente:

  1. Realice una copia de seguridad completa de la Mac, una que debe tomar en serio si borra la máquina y ejecuta una compilación de prueba del programa y luego restaura la copia de seguridad completa o los archivos que necesita de forma selectiva desde la copia de seguridad. >
  2. Elimine Xcode y elimine todos los compiladores que haya descargado e instalado.
  3. Instale una herramienta para ayudar con el mantenimiento e instalación del compilador y los archivos de biblioteca de encabezado necesarios para el último estándar de c ++.

La herramienta que utilizo es homebrew, por lo que puede instalarla según enlace

  1. brew update
  2. brew doctor - y asegúrese de seguir cualquiera de los consejos del médico o publicar aquí para obtener consejos
  3. brew install gcc

Aquí está el programa de prueba que usé para un "caso de prueba mínimo"

#include<atomic>
#include<iostream>

using namespace std;

int main()
{
    cout << "Hello World" << endl;
}

Antes de usar la versión "brew" de gcc, obtengo lo que supongo que es el mismo error que tú:

mac:Desktop me$ /usr/bin/gcc gate\ test.cpp
In file included from gate test.cpp:1:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic:543:2: error: <atomic> is not implemented
#error <atomic> is not implemented
 ^
1 error generated.
mac:Desktop me$ which gcc
/usr/bin/gcc

Pero si lo compilo usando el "brew instalado gcc", recibo un mensaje detallado muy bueno

mac:Desktop me$ g++-5 gate\ test.cpp 
In file included from /usr/local/Cellar/gcc/5.2.0/include/c++/5.2.0/atomic:38:0,
                 from gate test.cpp:1:
/usr/local/Cellar/gcc/5.2.0/include/c++/5.2.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support for the \
  ^
mac:Desktop me$ g++-5 gate\ test.cpp -std=c++11

TLDR;

  1. apuntando su compilador a g ++ 5
  2. elimine otros compiladores según sea necesario (incluido Xcode posiblemente)
  3. agregar la opción de compilación -std = c ++ 11
respondido por el bmike 02.12.2015 - 15:42
1

Tenía el mismo problema con xCode 6.4. Cuando usé atomic en un programa simple helloWorld funcionó, pero cuando usé un proyecto generado por CMake, tuve el "#error no está implementado"

Parece que CMake necesita indicadores especiales para habilitar c ++ 11 en mac ... Entonces, exactamente (casi ... reemplazado si (UNIX) por if (APPLE)) como lo indica el kitware aquí:

enlace

En caso de que el enlace deje de funcionar un día ...

cmake_minimum_required(VERSION 2.6)

PROJECT(Test)

if(UNIX)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=gnu++0x")
endif()

# MSVC does not require any special flags
    
respondido por el Pete 05.02.2017 - 01:48

Lea otras preguntas en las etiquetas