2014-10-24 2 views
0

мне было интересно ли здесь кто-нибудь может помочь мне лучше понять отношения между OSX и C. Там некоторая информация разработчика, связанные с C++ в Xcode, но ничего для C.Язык C и Mac OSX

Я считаю, что одно принципиальное отличие что osx использует libc, а не glibc. Может ли кто-нибудь указать мне на документацию libc? Кажется, я не могу найти.

Я видел папку usr/includes, но все, что делает, заставляет меня задаться вопросом, где я могу получить ссылку, которая разъясняет все доступные мне варианты. Например, я только что открыл <tree.h>. Это все хорошо и хорошо, но есть ли какая-либо документация? Или мне нужно тралить папку include?

+0

Большинство библиотек C аналогичны по своей сути, с известными известными причудами. Я верю, что после установки xcode у вас будет компилятор в командной строке и полезный сборник справочных страниц для 'man' для чтения, т. Е. Введите' man printf' и посмотрите, что произойдет. –

+6

Непонятно, что вы спрашиваете. C является одним из языков, поддерживаемых для разработки в OS X. OS X предоставляет полную C-стандартную библиотеку и еще немало других библиотек C. Стандартная библиотека документируется как стандартом C, так и страницами man. «libc» - это просто общее имя для любой стандартной библиотеки C. «glibc» - это одна конкретная реализация этой библиотеки, тогда как Apple использует свою собственную реализацию для OS X, которая является частью библиотеки libSystem. –

+1

OS X является производным BSD Unix в его основе. Существует множество стандартных ссылок на C, и вы можете использовать что-то вроде [Расширенное программирование в среде Unix] (http://www.amazon.com/Advanced-Programming-UNIX-Environment-Edition/dp/0321637739) для Unix, а также man-страницы. Для всех частей какао у Apple есть много документации. Попытка в папках 'usr/include' - довольно неэффективный способ обойти вещи, и там много чего, вы не должны напрямую использовать. –

ответ

0

Немного непонятно, что вы просите.

OS X основан на версии FreeBSD, совместимой с POSIX операционной системой UNIX. Связь между OS X и C заключается в том, что C является одним из многих языков программирования, которые вы можете кодировать для разработки для платформы (C является ядром Objective-C, иначе неиспользуемого языка, который принадлежат Apple).

OS X не использует libc. clang, компилятор , который поставляется как часть пакета инструментов разработчика Apple для OS X, использует libc. Есть разница. Если вы хотите использовать glib, возьмите GCC из Homebrew или Macports и используйте его для компиляции своих программ вместо clang.

Наконец, вы не можете найти документацию для libc, так как все библиотеки C, такие как libc, glibc и т. Д., Предоставляют одинаковый набор функций, если они соответствуют стандартам. Между различными библиотеками C, как правило, мало различий между конечными пользователями; поэтому, если вы хотите узнать о файле заголовка, используйте man, например: man clang, чтобы прочитать документацию clang, например.

Надеюсь, это поможет.

+0

Спасибо @SevenBits. Это было полезно. Я предполагаю, что я имел в виду, каковы детали реализации OSX и как они отличаются от других библиотек C. Мое рабочее предположение заключается в том, что эти различия будут каталогизированы на страницах, уникальных для системы. – limik

0

Похоже, что вы спрашиваете, отличается ли функциональность, которую OSX предоставляет вам в качестве программиста, частично отличается от других систем * nix; сфокусировавшись на функциональности, которую предоставляет OSX в стандартной библиотеке C.

Теперь имейте в виду, что, хотя стандартная библиотека C - это очень распространенный способ воспользоваться преимуществами, предоставляемыми ядром операционной системы, это не единственный способ. Вы можете использовать другие низкоуровневые библиотеки или самостоятельно записывать низкоуровневые функции.

Сказав это, необходимо учитывать следующее:

  • OSX, как и многие другие системы * NIX, является "главным образом POSIX-совместимый". Это означает, что его конкретная реализация стандартной библиотеки C, скорее всего, выведет headers defined by the POSIX standard. Это то, на что вы можете положиться, независимо от того, используете ли вы libc, glibc или какую-либо другую реализацию стандартной библиотеки C.
  • В зависимости от конкретной стандартной библиотеки стандартов C, она может иметь дополнительную функциональность, например BSD libc - мы говорим об этом «надмножеством стандартной библиотеки POSIX». Хотя он может содержать реализации вещей, специфичных для BSD (и, следовательно, OSX), он в основном, как представляется, содержит вещи, которые могут быть реализованы независимо от вкуса операционной системы. Например, заголовок sys/tree.h, который вы упоминаете, является «реализацией Red-black tree и Splay tree» - отнюдь не то, что не могло быть реализовано в системе Linux!

Подводя итог:

  • OSX поставляется с реализацией стандартной библиотеки C называется BSD libc, который обеспечивает некоторые дополнительные заголовки в верхней части, что определяет POSIX стандарт.
  • Разница в функциональности между XNU kernel used by OSX и другими ядрами * nix не обязательно будет фиксироваться в разнице между реализациями стандартной библиотеки C. Если вы хотите знать, что может сделать ядро ​​XNU для вас, что ядро ​​Linux не может, то место, которое нужно запустить, - это сами ядра.

Так что ваш вопрос можно разделить на:

  • В чем разница между glibc и BSD libc?

и

  • В чем разница между XNU ядром и ядром Linux?