Библиотека C, независимая от операционной системы - PullRequest
6 голосов
/ 05 октября 2010

Существует ли библиотека C для таких операций, как файловые операции, получение системной информации и т. П., Которая является общей, которая может использоваться при компиляции на разных платформах и которая ведет себя аналогичным образом?

Редактировать : что-то вроде платформы Java или .NET, абстрагирующейся от аппаратного обеспечения.

Ответы [ 5 ]

10 голосов
/ 05 октября 2010

Вы пробовали стандартную библиотеку? Это должно быть реализовано в любой системе, имеющей ISO-совместимое время выполнения C.

4 голосов
/ 06 октября 2010

Да; Стандартная библиотека ISO C . Он может не охватывать все функции, которые вам нужны, но это именно потому, что он является универсальным, и поэтому также является наименьшим общим знаменателем . Он поддерживает только те функции, которые можно обоснованно ожидать на большинстве аппаратных средств, включая встроенные системы.

Путь к этому, возможно, заключается в том, чтобы указать диапазон целевых платформ, которые вам необходимо поддерживать, а затем домены приложений (например, GUI, работа в сети, многопоточность, обработка изображений, обработка файлов и т. Д.), А затем выберите индивидуальные кроссплатформенные библиотеки, которые соответствуют вашим потребностям. Вероятно, не существует ни одной библиотеки для удовлетворения всех ваших потребностей, а в некоторых случаях вообще нет общей библиотеки.

Тем не менее, вы всегда будете лучше обслуживаться в этом отношении, приняв C ++, где вы можете использовать любую библиотеку C, а также библиотеки C ++. Стандартная библиотека C ++ не только больше, но и такие библиотеки, как Boost, wxWidgets, ACE, также охватывают более широкий спектр доменов. Другой подход заключается в использовании кроссплатформенного языка, такого как Java, который решает проблему путем абстрагирования оборудования от виртуальной машины. Точно так же .NET / Mono и C # могут предоставить решение для соответственно ограниченного набора целевых платформ.

Добавлен следующий комментарий: Аппаратная абстракция на языке, ориентированном на реальную машину (в отличие от языка виртуальных машин, такого как языки на основе Java или CLR), предоставляется операционной системой, поэтому вам, возможно, понадобится общий API-интерфейс операционной системы. POSIX, вероятно, наиболее близок к этому, будучи поддерживаемым в Linux, Unix, OSX (то есть Unix), QNX, VxWorks, BeOS и многих других; но не главное винда. Одним из способов использования POSIX в Windows является использование Cygwin. Другой способ - использовать виртуальную машину для размещения ОС POSIX, такой как Linux.

1 голос
/ 05 октября 2010

Для всего, что не найдено в стандартной библиотеке, GLib - это хорошее первое место, где можно ознакомиться с другими библиотеками, созданными для взаимодействия с ней.Он предлагает, например, потоки, мьютексы и IPC, которые вы не сможете писать переносимо, используя простые стандартные библиотеки, и вы можете использовать гораздо больше библиотек GNU, которые следуют тем же соглашениям, вплоть до полного графического интерфейса в GTK +.GLib поддерживает обычные популярные операционные системы.

0 голосов
/ 06 октября 2010

Если вам нужны средства, выходящие за рамки стандартной библиотеки C, взгляните на Apache Portable Runtime (APR). Вы также должны проверить, обеспечивает ли POSIX функциональность, к которой вы стремитесь, хотя она поставляется с собственным пакетом червей.

Если вы хотите заняться графикой и тому подобным, то вы попадаете в другой мир - на ум приходят GTK, Glib и Qt, хотя я не использовал ни одного из них.

0 голосов
/ 06 октября 2010

Если стандартной библиотеки C недостаточно для ваших нужд, минимальная гиперпортативная подмножество POSIX может быть целью, которую вы хотите закодировать. Например, основная операционная система Windows, отличная от POSIX, по-прежнему имеет ряд функций с такими же именами, что и функции POSIX, которые ведут себя достаточно тесно - open, read, write и т. Д.

Документирование того, что именно включает в себя «гиперпортативное подмножество POSIX» и какие операционные системы, не относящиеся к POSIX, будут соответствовать такому подмножеству, является довольно сложной задачей, которая была бы весьма полезна сама по себе во избежание чума продуктов " MyCompanyName portable runtime", которые появляются снова и снова каждые несколько лет и излишне распространяют популярное программное обеспечение, такое как Firefox и Apache.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...