Где мой "stdio.h" в Mac?

Я знаю, что Mac OS X - это система на основе Unix. И я слышал, что эта стандартная библиотека C, такая как stdio.h, находится в /usr/local/include или /usr/include. Но в этом каталоге нет какой-либо библиотеки. Я использую Terminal для поиска в этом каталоге, и я также использую команду как find ./ -iname "stdio.h", но ничего не выходит. Однако, как ни странно, команда gcc -test.c -o test работает. Как это произошло? Я хочу знать, где находится моя библиотека C. p.s Я также использую Xcode. Связано ли это с этим приложением? Помоги мне!   И у меня есть сервер AWS EC2 linux, и у него есть обе библиотеки, которые я ссылал выше.

Ответ 1

Если у вас есть Xcode, но не установлен дополнительный пакет инструментов командной строки, тогда стандарт включает в себя и библиотеки не могут быть найдены в обычном месте. Попробуйте:

$ find /Applications/Xcode.app -name stdio.h

и вы, вероятно, увидите что-то вроде:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdio.h

Однако вы можете захотеть установить пакет инструментов командной строки, если вы планируете выполнять любое программирование без кода Xcode (например, командной строки). Затем вы увидите обычные заголовки и библиотеки в /usr/include и /usr/lib.

Ответ 2

Если у вас нет установленных средств командной строки, вы можете запустить:

xcode-select --install

Откроется диалоговое окно, позволяющее принять лицензионное соглашение и т.д.

(Это отсутствовало в приведенных выше ответах.)

Ответ 3

создать/обновить символическую ссылку для /usr/include, чтобы обнаружены файлы:

sudo ln -sf /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include /usr/include

Указанный путь можно найти, выполнив поиск stdio.h

find /Applications/Xcode.app -path '*/usr/include/stdio.h'

Мне нужно сделать это с каждым обновлением XCode/MacOS SDK, сегодня это случилось с обновлением XCode 7.

После установки инструментов командной строки они не могут быть повторно установлены с помощью xcode-select, поэтому путь может не обновляться при обновлении Mac App Store.

Удаление и переустановка XCode, а затем запуск xcode-select --install может обновить путь, но это перебор.

В некоторых сообщениях также упоминается xcode-select --switch /Application/Xcode.app, но мне не повезло с ним.

Ответ 4

Основная причина - отсутствие папки /usr/include, установка инструментов командной строки иногда не добавляет ее автоматически.

Установить пакет на

/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Ответ 5

В моем ноутбуке он появляется во многих местах, таких как /usr/include/stdio.h и /usr/include/sys/stdio.h и /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdio.h.

Ответ 6

Если вы уже создали свою базу данных локации, вы можете использовать

locate stdio.h

Если вы еще этого не сделали, создайте его. Команда locate является удивительной!

Ответ 7

В папке

Applications/Xcode/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include

или аналогичный.

Ответ 8

Я установил "CommandLineTools", и файл "stdio.h" существует в директориях Xcode и CommandLineTools.

/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/stdio.h /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdio.h