I have a project that compiles on Ubuntu with gcc and g++ 7.5. For some reason it does not compile with the latest G++ on my Arch.
For some reason, std::atomic_bool is not found, even though the exact same code compiles in Ubuntu.
I installed gcc and g++ 7.5 onto my Arch, and then ran the following as per here:
export CC=/usr/bin/gcc-7
export CXX=/usr/bin/g++-7
cmake ..
make -j12
But it did not work, and failed with the same message as if I tried to build with gcc-10. I tried all different variations, like the following, but none of them worked.
cmake -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 ..
Am I missing anything?
Here is the terminal output
[seedship@triple-destinies cpsCore]$ mkdir build
[seedship@triple-destinies cpsCore]$ cd build/
[seedship@triple-destinies build]$ export CC=/usr/bin/gcc-7
[seedship@triple-destinies build]$ export CXX=/usr/bin/g++-7
[seedship@triple-destinies build]$ cmake ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc-7 - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++-7 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Boost: /usr/lib64/cmake/Boost-1.75.0/BoostConfig.cmake (found version "1.75.0") found components: system
Compiling with NODEBUG
-- Configuring done
-- Generating done
-- Build files have been written to: /home/seedship/cpsCore/build
[seedship@triple-destinies build]$ make -j12
Scanning dependencies of target cps_core
[ 4%] Building CXX object src/CMakeFiles/cps_core.dir/Aggregation/Aggregator.cpp.o
[ 4%] Building CXX object src/CMakeFiles/cps_core.dir/Aggregation/DynamicContainer/DynamicObjectContainer.cpp.o
[ 6%] Building CXX object src/CMakeFiles/cps_core.dir/Configuration/JsonPopulator.cpp.o
[ 11%] Building CXX object src/CMakeFiles/cps_core.dir/Configuration/TerminalConfigurator.cpp.o
[ 11%] Building CXX object src/CMakeFiles/cps_core.dir/Configuration/Configuration.cpp.o
[ 13%] Building CXX object src/CMakeFiles/cps_core.dir/Synchronization/AggregatableRunner.cpp.o
[ 16%] Building CXX object src/CMakeFiles/cps_core.dir/Synchronization/SimpleRunner.cpp.o
[ 18%] Building CXX object src/CMakeFiles/cps_core.dir/Synchronization/SynchronizedRunner.cpp.o
[ 20%] Building CXX object src/CMakeFiles/cps_core.dir/Synchronization/SynchronizedRunnerMaster.cpp.o
[ 23%] Building CXX object src/CMakeFiles/cps_core.dir/Framework/PluginManager.cpp.o
[ 25%] Building CXX object src/CMakeFiles/cps_core.dir/Framework/Helper.cpp.o
[ 27%] Building CXX object src/CMakeFiles/cps_core.dir/Logging/CPSLogger.cpp.o
[ 30%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/LinearAlgebra.cpp.o
In file included from /home/seedship/cpsCore/src/Configuration/TerminalConfigurator.cpp:5:0:
/home/seedship/cpsCore/include/cpsCore/Configuration/TerminalConfigurator.h: In member function ‘bool TerminalConfigurator::configure(ConfObj&)’:
/home/seedship/cpsCore/include/cpsCore/Configuration/TerminalConfigurator.h:49:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
/home/seedship/cpsCore/include/cpsCore/Configuration/TerminalConfigurator.h: In member function ‘TerminalConfigurator& TerminalConfigurator::operator&(Param&)’:
/home/seedship/cpsCore/include/cpsCore/Configuration/TerminalConfigurator.h:67:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
[ 32%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/Packet.cpp.o
[ 34%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/SignalHandler/SignalHandler.cpp.o
[ 37%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/TimeProvider/SystemTimeProvider.cpp.o
[ 39%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/Scheduler/MicroSimulator.cpp.o
[ 41%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/Scheduler/ExternalSimulator.cpp.o
[ 44%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/Scheduler/MultiThreadingScheduler.cpp.o
[ 46%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/Scheduler/Event.cpp.o
In file included from /usr/include/boost/property_tree/json_parser/detail/parser.hpp:7:0,
from /usr/include/boost/property_tree/json_parser/detail/read.hpp:13,
from /usr/include/boost/property_tree/json_parser.hpp:16,
from /home/seedship/cpsCore/src/Framework/Helper.cpp:7:
/usr/include/boost/bind.hpp:41:1: note: #pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.
)
^
In file included from /usr/include/boost/property_tree/json_parser/detail/parser.hpp:7:0,
from /usr/include/boost/property_tree/json_parser/detail/read.hpp:13,
from /usr/include/boost/property_tree/json_parser.hpp:16,
from /home/seedship/cpsCore/src/Configuration/Configuration.cpp:5:
/usr/include/boost/bind.hpp:41:1: note: #pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.
)
^
[ 48%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/Scheduler/EventBody.cpp.o
[ 51%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IPC/IPC.cpp.o
[ 53%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IPC/Subscription.cpp.o
[ 55%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp.o
[ 58%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp.o
[ 60%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IPC/detail/MessageQueuePublisherImpl.cpp.o
[ 62%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IPC/detail/SharedMemoryPublisherImpl.cpp.o
[ 65%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IDC/NetworkLayer/Serial/SerialHandler.cpp.o
[ 67%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IDC/NetworkLayer/Serial/SerialNetworkLayer.cpp.o
[ 69%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IDC/NetworkLayer/Redis/RedisPublisher.cpp.o
In file included from /home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:11:0:
/home/seedship/cpsCore/include/cpsCore/Utilities/IPC/detail/MessageQueueSubscriptionImpl.h:45:7: error: ‘atomic_bool’ in namespace ‘std’ does not name a type
std::atomic_bool listenerCanceled_;
^~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp: In constructor ‘MessageQueueSubscriptionImpl::MessageQueueSubscriptionImpl(const string&, std::size_t)’:
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:15:62: error: class ‘MessageQueueSubscriptionImpl’ does not have any field named ‘listenerCanceled_’
messageQueue_(boost::interprocess::open_only, id.c_str()), listenerCanceled_(false), maxPacketSize_(
^~~~~~~~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp: In destructor ‘virtual MessageQueueSubscriptionImpl::~MessageQueueSubscriptionImpl()’:
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:22:7: error: ‘listenerCanceled_’ was not declared in this scope
if (!listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:22:7: note: suggested alternative: ‘listenerThread_’
if (!listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
listenerThread_
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp: In member function ‘virtual void MessageQueueSubscriptionImpl::cancel()’:
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:31:2: error: ‘listenerCanceled_’ was not declared in this scope
listenerCanceled_.store(true);
^~~~~~~~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:31:2: note: suggested alternative: ‘listenerThread_’
listenerCanceled_.store(true);
^~~~~~~~~~~~~~~~~
listenerThread_
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp: In member function ‘void MessageQueueSubscriptionImpl::onMessageQueue()’:
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:54:7: error: ‘listenerCanceled_’ was not declared in this scope
if (listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:54:7: note: suggested alternative: ‘listenerThread_’
if (listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
listenerThread_
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:79:7: error: ‘listenerCanceled_’ was not declared in this scope
if (listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp:79:7: note: suggested alternative: ‘listenerThread_’
if (listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
listenerThread_
In file included from /home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp:12:0:
/home/seedship/cpsCore/include/cpsCore/Utilities/IPC/detail/SharedMemorySubscriptionImpl.h:47:7: error: ‘atomic_bool’ in namespace ‘std’ does not name a type
std::atomic_bool listenerCanceled_;
^~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp: In constructor ‘SharedMemorySubscriptionImpl::SharedMemorySubscriptionImpl(const string&)’:
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp:18:92: error: class ‘SharedMemorySubscriptionImpl’ does not have any field named ‘listenerCanceled_’
sharedMem_(boost::interprocess::open_only, id.c_str(), boost::interprocess::read_write), listenerCanceled_(
^~~~~~~~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp: In member function ‘virtual void SharedMemorySubscriptionImpl::cancel()’:
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp:33:2: error: ‘listenerCanceled_’ was not declared in this scope
listenerCanceled_.store(true);
^~~~~~~~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp:33:2: note: suggested alternative: ‘listenerThread_’
listenerCanceled_.store(true);
^~~~~~~~~~~~~~~~~
listenerThread_
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp: In destructor ‘virtual SharedMemorySubscriptionImpl::~SharedMemorySubscriptionImpl()’:
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp:40:7: error: ‘listenerCanceled_’ was not declared in this scope
if (!listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp:40:7: note: suggested alternative: ‘listenerThread_’
if (!listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
listenerThread_
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp: In member function ‘void SharedMemorySubscriptionImpl::onSharedMemory()’:
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp:73:7: error: ‘listenerCanceled_’ was not declared in this scope
if (listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
/home/seedship/cpsCore/src/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp:73:7: note: suggested alternative: ‘listenerThread_’
if (listenerCanceled_.load())
^~~~~~~~~~~~~~~~~
listenerThread_
In file included from /home/seedship/cpsCore/include/cpsCore/Utilities/IPC/IPC.h:14:0,
from /home/seedship/cpsCore/src/Utilities/Scheduler/ExternalSimulator.cpp:7:
/home/seedship/cpsCore/include/cpsCore/Utilities/IPC/detail/SharedMemorySubscriptionImpl.h:47:7: error: ‘atomic_bool’ in namespace ‘std’ does not name a type
std::atomic_bool listenerCanceled_;
^~~~~~~~~~~
[ 72%] Building CXX object src/CMakeFiles/cps_core.dir/Utilities/IDC/NetworkLayer/Redis/RedisSubscriber.cpp.o
make[2]: *** [src/CMakeFiles/cps_core.dir/build.make:381: src/CMakeFiles/cps_core.dir/Utilities/IPC/detail/MessageQueueSubscriptionImpl.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [src/CMakeFiles/cps_core.dir/build.make:394: src/CMakeFiles/cps_core.dir/Utilities/IPC/detail/SharedMemorySubscriptionImpl.cpp.o] Error 1
make[2]: *** [src/CMakeFiles/cps_core.dir/build.make:303: src/CMakeFiles/cps_core.dir/Utilities/Scheduler/ExternalSimulator.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:443: src/CMakeFiles/cps_core.dir/all] Error 2
make: *** [Makefile:149: all] Error 2