Clang OS X Lion, не могу найти cstdint
Я пытаюсь скомпилировать приложение, которое использует cstdint. Так как Apple устарела в gcc, я хотел попробовать скомпилировать его с помощью clang, но я получаю ошибку:
fatal error: 'cstdint' file not found
Я знаю, что версия gcc 4.6.2 имеет опцию для -std=c++0x
, чтобы включить библиотеку, но так как версия OS X 4.2, это не слишком вариант здесь. Любые предложения о том, как я могу двигаться вперед? Я попытался установить 4.6.2, но столкнулся с множеством проблем при компиляции некоторых необходимых библиотек перед сборкой gcc.
1 ответ
Предположительно, у вас есть исходный код для этого приложения, поэтому вы можете изменить заголовки, чтобы включить правильные cstdint
заголовок, как Clang 3.0 (который поставляется с инструментами Lion) имеет заголовок.
Быстрое решение
Заголовок находится под tr1
каталог, так что вы захотите сделать одно из следующих:
#include <tr1/cstdint>
Или же
#include <stdint.h> // which will use the C99 header
Длиннее, скучное объяснение
После некоторого дополнительного чтения, поскольку я помню, вы можете сделать это без каталога tr1:
По умолчанию вы будете включать заголовки C++ из /usr/include/c++/4.2.1
, которые являются заголовками GNU GCC. /usr/include/c++/4.2.1/tr1
включает в себя заголовочные файлы TR1, как cstdint
,
Альтернативный метод заключается в компиляции с использованием внешнего интерфейса Clang++ и передачи -stdlib=libc++
флаг, который будет использовать заголовки из /usr/include/c++/v1
, которые являются реализациями заголовка C++ Clang. Она имеет cstdint
,
Пример:
// file called example.cxx
#include <tr1/cstdint>
int main() {
// whatever...
}
Скомпилируйте это с:
g++ example.cxx
или же
clang++ example.cxx
И он будет делать то, что вы хотите.
Если вы не хотите использовать tr1
версия (которая примерно одинакова, если не совсем):
// file called example.cxx
#include <cstdint>
int main() {
// stuff
}
Это скомпилировано так:
clang++ -stdlib=libc++ example.cxx
Хотя, если вы используете -stdlib=libc++
, это означает, что вы ссылаетесь на библиотеку Clang C++ libc++
, а не GCC libstdc++
,