errore di compilazione: atomic non è implementato

3

Quando compilo un programma open source chiamato gate con "make" ho questo messaggio di errore:

error <atomic> is not implemented

Devo aggiungere che conosco questo programma e l'ho compilato parecchie volte in precedenza senza problemi

La mia configurazione assomiglia a:

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

Corro su yosemite 10.10.5, xcode 7.1.1 e ho provato diverse compilation con clang e gcc

    
posta Luc SIMON 29.11.2015 - 18:42
fonte

2 risposte

1

Guardando la domanda, le modifiche e i commenti, sta diventando chiaro che la configurazione della catena del compilatore e le intestazioni è probabilmente la causa. Potresti continuare a provare ad aggiungere cose, ma vorrei prendere una virata diversa:

  1. Esegui un backup completo del Mac, che si sta utilizzando seriamente se si pulisce la macchina ed è in esecuzione una compilazione di test del programma, quindi si ripristina il backup completo oi file necessari in modo selettivo dal backup.
  2. Rimuovi Xcode e rimuovi tutti i compilatori che hai scaricato e installato.
  3. Installa uno strumento per facilitare la manutenzione e l'installazione del compilatore e i file della libreria di intestazione necessari per l'ultimo standard c ++.

Lo strumento che uso è homebrew, quindi puoi installarlo per link

  1. brew update
  2. brew doctor - e assicurati di seguire i consigli del medico o posta qui per un consiglio
  3. brew install gcc

Ecco il programma di test che ho usato per un "caso di test minimale"

#include<atomic>
#include<iostream>

using namespace std;

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

Prima di utilizzare la versione "brew" di gcc, ottengo quello che presumo sia lo stesso errore che hai:

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

Ma se lo compilo usando "brew installed gcc", ricevo un messaggio dettagliato molto carino

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. punta il tuo compilatore su g ++ 5
  2. elimina altri compilatori in base alle esigenze (incluso eventualmente Xcode)
  3. aggiunta dell'opzione di compilazione -std = c ++ 11
risposta data 02.12.2015 - 15:42
fonte
1

Ho avuto lo stesso problema con xCode 6.4. Quando si utilizzava atomico in un semplice programma helloWorld funzionava, ma quando si utilizzava un progetto generato da CMake, avevo il "#error non implementato"

Sembra che CMake abbia bisogno di speciali flag per abilitare c ++ 11 su mac ... Così, ha fatto esattamente (quasi ... sostituito se (UNIX) da if (APPLE)) come kitware indica qui:

link

Nel caso in cui il collegamento smetta di funzionare un giorno ....

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
    
risposta data 05.02.2017 - 01:48
fonte

Leggi altre domande sui tag