2015-06-16 3 views
7

В OSX я не могу скомпилировать простые программы из командной строки, когда я использую внешний компилятор (например, gcc-4.8). Системные заголовки, такие как limits.h, не найдены.fatal error: limits.h: Нет такого файла или каталога

сообщения Пример ошибки:

fatal error: limits.h: No such file or directory 

Или:

fatal error: stdio.h: No such file or directory 

и так далее.

Что случилось?

ответ

17

Убедитесь, что вы установили Xcode инструменты командной строки: (. Accept диалог всплывающую)

xcode-select --install 

Это установит системные заголовки в стандартные места ожидаемых инструментов, таких как GCC , например /usr/include.

+0

В gcc должен быть установлен собственный набор файлов заголовков, который он знает, как найти. Использование файлов заголовков из одного компилятора (clang, из Xcode) с другим компилятором (gcc, установленным отдельно), вполне вероятно, требует неприятностей. –

+1

gcc устанавливает собственные заголовки C++, но для заголовков C история отличается. Он пытается использовать собственные C-заголовки системы. На некоторых (хорошо, много) системах C-заголовки не совместимы с ANSI, поэтому gcc предоставит свои собственные «фиксированные» заголовки, чтобы заменить несколько «сломанных» системных заголовков. Но для тех заголовков, которые не нужно «фиксировать», не будет никакой копии gcc. Будет использоваться только исходный заголовок системы. Для получения дополнительной информации см. Документацию для этапа gcc «fix-includes», когда gcc скомпилирован из источника. –

+0

Я обнаружил эти ошибки при попытке установить вручную отдельные пакеты. Я запускаю python 2.7 с conda в качестве менеджера среды, и gcc 5.0 установлен в Mac OS X 10.12.3 Sierra. Насколько я помню, мои инструменты gcc и командной строки были полностью установлены и запущены. Во всяком случае, переустановив их, решите проблему. – Hugo

Смежные вопросы