g ++ 4.6, выпуск №файл в соответствии с требованиями заголовка cstring - PullRequest
20 голосов
/ 09 февраля 2012

В каталоге включения c ++ нет файла с именем bits/c++config.h, который требуется для заголовочного файла cstring.Но когда я включаю заголовок cstring и компилирую с g++, это не дает мне ошибки.Проблема возникла, когда я попытался скомпилировать программу с помощью компилятора clang++ следующим образом.

$clang++ -cc1 -I/usr/include -I/usr/include/c++/4.6.1 -I/usr/lib/gcc/i686-linux-gnu/4.6.1 -I/usr/include/i386-linux-gnu -I opt_149739_build/include hello.cpp

In file included from /media/space/hello.cpp:2:
In file included from /media/space/opt_149739_build/include/clang/Driver/Driver.h:13:
In file included from /media/space/opt_149739_build/include/clang/Basic/Diagnostic.h:17:
In file included from /media/space/opt_149739_build/include/clang/Basic/DiagnosticIDs.h:18:
In file included from /media/space/opt_149739_build/include/llvm/ADT/StringRef.h:14:
/usr/include/c++/4.6.1/cstring:42:10: fatal error: 'bits/c++config.h' file not found
#include <bits/c++config.h>

Я использую g ++ 4.6.1 в Ubuntu 11.04

Что пошло не так?

Ответы [ 2 ]

29 голосов
/ 09 февраля 2012

Файл bits/c++config.h является специфическим для платформы включением относительно текущего компилятора, поэтому он скрыт в другом каталоге, по умолчанию ищется g ++, но не clang ++, как кажется.

В моеммашина, работающая locate c++config.h, выдает следующие (соответствующие) файлы:

/usr/include/c++/4.6/i686-linux-gnu/64/bits/c++config.h
/usr/include/c++/4.6/i686-linux-gnu/bits/c++config.h

Первый - для 64-битных, второй - для 32-битных.

Так что просто добавьте -I/usr/include/c++/4.6/i686-linux-gnu или -I/usr/include/c++/4.6/i686-linux-gnu/64 или все, что вам нужно для вашей платформы.

0 голосов
/ 09 февраля 2012

Это может быть связано с тем, как clang ++ ищет файлы заголовков.

Вы найдете образец патча о том, как они это исправляют для fedora 15, 4 месяца назад, здесь .

См. сообщение в red hat bugzilla для получения дополнительной информации.

...