GCC 4.7, включая <stdatomic.h> - PullRequest
2 голосов
/ 29 марта 2012

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

Ответы [ 2 ]

2 голосов
/ 16 февраля 2013

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

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

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

2 голосов
/ 30 марта 2012

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

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

...