Я знаю, что 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, и у него есть обе библиотеки, которые я ссылал выше.
Где мой "stdio.h" в Mac?
Ответ 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