GCC 4.7, включая <stdatomic.h>

Я только что скомпилировал GCC 4.7 для работы с stdatomic.hно я не могу -I Это. stdatomic.h кажется, живет в /usr/include/c++/4.4.3, но затем компоновщик говорит мне, что ему нужно несколько других файлов в директории поблизости. Если я -I все они, я все еще получаю ошибку undefined reference to atomic_flag_clear_explicit, Любые идеи, как я должен связать это право?

3 ответа

Во-первых, если вы компилируете с GCC 4.7, вы не должны включать или связывать что-либо из каталога из GCC 4.4.

Во-вторых, -I влияет только на путь поиска для заголовочных файлов. "неопределенная ссылка" является ошибкой компоновщика и обычно означает, что она не нашла нужную библиотеку. Вы изменяете путь поиска библиотеки с -L, Линкер не сказал, что не нашел библиотеку с правильным названием, он сказал, что не нашел символа, поэтому ясно, что в найденной библиотеке не было этого символа. Я бы посоветовал вам иметь проблему с версиями, возможно, вызванную проблемой установки.

Заголовок в GCC 4.4 и 4.5 был взят из ранней версии атомарного кода C++0x, но не является частью окончательного стандарта, поэтому он был удален из libstdC++.

Компилятор C++ поддерживает атомарность C++ 11 через заголовок C++ 11 , поэтому вы должны использовать этот заголовок в коде C++.

Когда компилятор C поддерживает атомарность C11, заголовок будет предоставлен снова.

Использование этой команды решило проблему для меня:

      $ scl enable devtoolset-7 bash

У меня такая же ошибка как и у вас при входе sudo make altinstallдля установки Python 3.8.5 на CentOS 7.

Другие вопросы по тегам