2010-06-06 2 views
0

У меня есть план создания веб-сайта, на котором работает CGI, созданного с помощью Cocoa. Моя конечная цель - Разработка на Mac OS X и запуск на FreeBSD. Возможно ли это?Возможно ли запустить скомпилированную программу с Xcode в Mac OS X во FreeBSD? (Objective-C/Cocoa)

Как я знаю, существует бесплатная реализация некоторых классов NextStep, GNUStep. Веб-сайт почти построен только с строк. Я читаю документы GNUStep, классов достаточно. Соединение с БД будет осуществляться с помощью C-интерфейсов.

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

Это не производственный сервер. Просто испытание. Пожалуйста, не стесняйтесь ничего говорить.

--edit--

Я смущен Foundation и какао рамок. Я сказал, что это Фонд. Базовые классы, которые достаточно для манипулирования строками.

ответ

0

Да, вы можете это сделать, и я делаю это прямо сейчас, используя FreeBSD 8.2 и Xcode 4.0, запуская класс Foundation из Cocotron. Вот ссылка: describing exactly what I did to build the cross compiler and set everything up. Я также подробно расскажу о том, как я пытался, чтобы получить AppKit (GUI) для работы. Я потерпел неудачу, он может работать в будущем, он пока не работает.

Пока это здорово. Я использую общую кодовую базу для написания iPhone App (игровой клиент) и FreeBSD Game Server; после компиляции моего сервера у меня даже есть целевой файл rsync для моего dev-модуля.

Еще одно замечание: вы упоминаете БД, я успешно использую библиотеки mysqlclient в своем приложении, и мои сообщения подробно описывают, как это сделать. Поскольку вы создаете кросс-компилятор с Cocotron, вы можете использовать любую библиотеку. Сначала установите библиотеку на FreeBSD, затем создайте платформу, как описано.

-2

Вы не получите двоичную совместимость. Mac OS X использует формат объекта Mach-O, а FreeBSD использует ELF, например linux. Cocoa не будет работать на платформах, отличных от Mac OS, но если вы придерживаетесь POSIX и библиотек с открытым исходным кодом, вам не должно быть слишком много проблем с созданием CGI (и любых зависимостей) на вашей машине FreeBSD.

Кроме того, какао для веб-сайта? Это стандартная библиотека Mac OS для графических интерфейсов, связанных с ними структур данных и различных помощников. Apple использовала для продвижения что-то, называемое WebObjects, которое было похоже на Cocoa для Интернета, но я ничего не слышал об этом в возрасте. Я не думаю, что Cocoa будет работать на веб-сайте, если вы просто не хотите писать собственный веб-сервер с графическим интерфейсом в Cocoa.

+0

Существует платформа CGI, которая использует Cocoa и Objective-C. Возможно, он планирует использовать это. – TechZen

+0

Cocoa не является «стандартной библиотекой для графических интерфейсов», это полный API и отлично подходит для приложений/инструментов командной строки. AppKit, структура внутри Cocoa, обрабатывает стандартные аспекты графического интерфейса, но ничто не говорит о том, что вы должны использовать его. Фактически, система регистрации для приложения, которое я построила для правительства США, представляет собой инструмент командной строки Cocoa, который вызывается через Tomcat, работающий на веб-сервере. Любая веб-технология, которая может вызывать инструмент командной строки, будет отлично работать с инструментом командной строки, который использует Cocoa. –

+1

Строго говоря, Cocoa не является основой, используемой для инструментов командной строки. Какао в основном связано с пользовательским интерфейсом. Рамка Foundation используется для инструментов командной строки. Существует версия GNUStep Фонда, но она не является напрямую совместимой. – TechZen

-1

Похоже, что вы пытаетесь использовать инструменты shoehorn для ОС и оборудования, для которого они не предназначены. Есть хаки, чтобы получить почти все, что работает поверх всего, но зачем спрашивать все горе?

Весь смысл всего API Apple заключается в том, что у вас есть интеграция с оборудованием на ОС в инструменты для разработки. Вы должны платить больше за фронт взамен за большую надежность и более низкую стоимость всего жизненного цикла. (Это не всегда работает так же, как Linux не всегда экономит деньги, и Windows не всегда предоставляет нужные вам варианты программного обеспечения, но это цель дизайна.) Когда вы нарушаете аппаратное обеспечение Apple-OS-Dev trinity, вам нужно начать сражаясь с API и оборудованием, а не позволяя ему работать на вас.

Я не думаю, что то, что вы делаете, будет работать, и даже если это произойдет, это будет стоить много времени, и в конечном итоге это деньги. Если вы не будете вынуждены использовать внешние обстоятельства вне своего контроля, чтобы использовать эту конфигурацию, я настоятельно рекомендую вам сделать все возможное, чтобы найти другой способ выполнить то, что вы хотите.

+0

Это не экономически выгодно, но довольно весело :) (Итак, я упомянул, что это всего лишь пробная версия) Спасибо TechZen, и я положу свой курс на перекомпилирование источников на FreeBSD. Спасибо, Джошуа! – Eonil

+0

@Joshua Nozzi - Вы будете удивлены, сколько пробелов в Гнустепе против Фонда. Поскольку Eonill просто делает это для удовольствия, это не очень важно, но я могу сказать вам по опыту, что портирование из Фонда в Gnustep нетривиально. Всегда есть небольшие пробелы и незначительные различия, которые необходимо отслеживать. – TechZen

1

Полностью можно использовать кросс-разработку с использованием Xcode. The Cocotron делает это - и обеспечивает реализацию Фонда - но в настоящее время не нацелен на FreeBSD. Вероятно, вы можете использовать его в качестве шаблона для настройки кросс-разработки для целей BSD с использованием GNUstep, но это будет непросто.

+0

Он нацелен на FreeBSD – Nektarios

1

Вы должны быть в порядке с GNUstep Foundation на FreeBSD 9.0 с Objective-C 2 (clang). См. these instructions.

Примечание: Do не установлено, устанавливая в соответствии с '/' с установкой по умолчанию FreeBSD, потому что у нее мало места на разделе '/'. Вместо этого я использовал/usr/local/gnustep и сделал некоторые ссылки в соответствии с инструкциями.

Примечание II: источники GNUstep из репозитория subversion не компилировались для меня, поэтому я использовал последние стабильные источники GNUstep.

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