Можно ли запустить скомпилированную программу с Xcode на Mac OS X в FreeBSD? (Цель-C/Какао)

У меня есть план создать веб-сайт, работающий с CGI, созданный с помощью Cocoa. Моя конечная цель — разработка на Mac OS X и запуск на FreeBSD. Это возможно?

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

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

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

--редактировать--

Я перепутал фреймворки Foundation и Cocoa. То, что я сказал, было Фондом. Базовые классы, которых достаточно для манипулирования строками.


person eonil    schedule 06.06.2010    source источник


Ответы (5)


Да, вы можете это сделать, и я успешно делаю это прямо сейчас, используя FreeBSD 8.2 и Xcode 4.0, запуская класс Foundation из The Cocotron. Вот ссылка: с описанием того, что я сделал, чтобы собрать кросс-компилятор и установить все готово. В этом посте я также подробно описал, как я пытался заставить AppKit (GUI) работать. Я потерпел неудачу, это может сработать в будущем, пока не работает полностью.

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

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

person Nektarios    schedule 18.03.2011

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

person Jens Ayton    schedule 06.06.2010

У вас должно быть все в порядке с GNUstep Foundation на FreeBSD 9.0 с Objective-C 2 (clang). См. эти инструкции.

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

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

person Community    schedule 16.10.2011

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

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

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

person TechZen    schedule 06.06.2010
comment
Это не рентабельно, но довольно весело :) (поэтому я упомянул, что это всего лишь пробная версия) Спасибо, TechZen, и я возьму курс на повторную компиляцию исходников на FreeBSD. Спасибо Джошуа! - person eonil; 06.06.2010
comment
@Joshua Nozzi - Вы будете удивлены, сколько пробелов в Gnustep по сравнению с Foundation. Поскольку Eonill делает это просто для удовольствия, это не имеет большого значения, но я могу сказать вам по опыту, что перенос с Foundation на Gnustep нетривиален. Всегда есть небольшие пробелы и незначительные различия, которые необходимо отследить. - person TechZen; 07.06.2010

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

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

person copumpkin    schedule 06.06.2010
comment
Существует платформа CGI, использующая Cocoa и Objective-C. Возможно, он планирует использовать это. - person TechZen; 06.06.2010
comment
Cocoa не является стандартной библиотекой для графических интерфейсов, это полноценный API, который прекрасно работает с приложениями/инструментами командной строки. AppKit, фреймворк в составе Cocoa, обрабатывает стандартные аспекты графического интерфейса, но ничто не говорит о том, что вы должны его использовать. На самом деле система регистрации для приложения, которое я создал для правительства США, представляет собой инструмент командной строки Cocoa, вызываемый через Tomcat, работающий на веб-сервере. Любая веб-технология, которая может вызывать инструмент командной строки, будет прекрасно работать с инструментом командной строки, использующим Cocoa. - person Joshua Nozzi; 06.06.2010
comment
Строго говоря, Cocoa не является средой, используемой для инструментов командной строки. Cocoa в значительной степени связан с пользовательским интерфейсом. Платформа Foundation используется для инструментов командной строки. Существует версия Foundation для GNUStep, но она не совместима напрямую. - person TechZen; 06.06.2010
comment
Извини, нет. Cocoa — это Foundation + AppKit: developer.apple. com/mac/library/documentation/MacOSX/Conceptual/ Среда приложений Cocoa состоит из двух объектно-ориентированных фреймворков: Foundation (Foundation.framework) и Application Kit (AppKit.framework). - person Joshua Nozzi; 06.06.2010
comment
Я думаю, что могу упустить ваш главный момент из-за семантики, TechZen. GNUStep != Какао, согласен. - person Joshua Nozzi; 06.06.2010
comment
О, это моя вина, что я их спутала. Извините ребята. - person eonil; 06.06.2010
comment
Ну, учитывая вашу цель, думаю, шесть из одного, полдюжины из другого. :-) Если вы придерживаетесь Cocoa Foundation, вы в значительной степени придерживаетесь GNUStep Foundation (с небольшими изменениями). GNUStep, в конце концов, задумывался как Cocoa с открытым исходным кодом... Вам мешает компиляция/связывание. - person Joshua Nozzi; 06.06.2010
comment
Я копаю GNUstep с файлами objc .o. Спасибо! - person eonil; 06.06.2010