Можно ли запустить FreeBSD скомпилированную программу с Xcode на Mac OS X? (Objective-C/ какао)
У меня есть план по созданию веб-сайта, на котором работает CGI, созданный с помощью Cocoa. Моя конечная цель - разработка под Mac OS X и запуск на FreeBSD. Это возможно?
Как я знаю, существует бесплатная реализация некоторых классов NextStep, GNUStep. Сайт практически построен только из строк. Я читаю документы GNUStep, классов достаточно. Соединение с БД будет осуществляться с помощью интерфейсов C.
Самая большая проблема, с которой я сталкиваюсь - это линкование и бинарная совместимость. В настоящее время я настраиваю FreeBSD на VirtualBox, но я хочу узнать любую информацию об этом от экспертов.
Это не рабочий сервер. Просто испытание. Пожалуйста, не стесняйтесь говорить что-нибудь.
--редактировать--
Я перепутал основы и основы Какао. То, что я сказал, было Фондом. Базовые классы которых достаточно просто для манипулирования строками.
5 ответов
Да, вы можете сделать это, и я делаю это прямо сейчас, успешно используя FreeBSD 8.2 и Xcode 4.0, используя класс Foundation из The Cocotron. Вот ссылка: точно описывает, что я сделал, чтобы построить кросс-компилятор и все настроить. Я также подробно опишу в этом посте, как я пытался заставить AppKit (GUI) работать. Я потерпел неудачу, это может работать в будущем, это еще не полностью работает.
Пока это здорово. Я использую общую кодовую базу для написания iPhone App (игровой клиент) и FreeBSD Game Server; после того, как мой сервер скомпилируется, у меня даже есть цель rsync файлы к моему устройству разработки.
Еще одно замечание, вы упомянули DB, я успешно использую библиотеки mysqlclient в своем приложении, и в моем сообщении подробно описано, как это сделать. Поскольку вы создаете кросс-компилятор с The Cocotron, вы можете использовать любую библиотеку. Просто установите библиотеку во FreeBSD, а затем создайте платформу, как описано.
У вас должно быть все в порядке с GNUstep Foundation на FreeBSD 9.0 с Objective-C 2 (clang). Смотрите эти инструкции.
Примечание. Не устанавливайте в каталог "/" с установкой по умолчанию во FreeBSD, так как в разделе "/" недостаточно места. Вместо этого я использовал / usr / local / gnustep и сделал несколько ссылок в соответствии с инструкциями.
Примечание II: источники GNUstep из хранилища subversion для меня не компилировались, поэтому я использовал последние стабильные источники GNUstep.
Это вполне возможно для кросс-разработки с использованием Xcode. Cocotron делает это - и обеспечивает реализацию Foundation - но в настоящее время не нацелен на FreeBSD. Возможно, вы могли бы использовать его в качестве шаблона для настройки кросс-разработки для целей BSD с использованием GNUstep, но это будет нелегко.
Похоже, вы пытаетесь прижать инструменты к ОС и аппаратному обеспечению, для которого они не предназначены. Есть взломы, чтобы заставить что-либо работать поверх чего-то еще, но зачем спрашивать обо всем этом горе?
Весь смысл всего Apple API в том, что у вас есть интеграция от оборудования до ОС и средств разработки. Вы должны платить больше авансом в обмен на большую надежность и более низкую стоимость всего жизненного цикла. (Он не всегда работает так же, как Linux не всегда экономит деньги, а Windows не всегда предоставляет программный выбор, который вам нужен, но это является целью разработки.) Когда вы нарушаете аппаратную троицу Apple, OS-Dev, вы должны начать бороться с API и оборудованием вместо того, чтобы позволить ему работать на вас.
Я не думаю, что то, что вы делаете, сработает, и даже если это произойдет, это будет стоить много времени, а в конечном итоге это деньги. Если вы не будете вынуждены использовать эту конфигурацию под влиянием внешних обстоятельств вне вашего контроля, я настоятельно рекомендую вам сделать все возможное, чтобы найти другой способ выполнить то, что вы хотите.
Вы не получите бинарную совместимость. Mac OS X использует формат объектов Mach-O, а FreeBSD использует ELF, как linux. Какао не будет работать на платформах, отличных от Mac OS, но если вы придерживаетесь POSIX и библиотек с открытым исходным кодом, у вас не должно быть особых проблем при создании CGI (и любых зависимостей) на вашем компьютере с FreeBSD.
Кроме того, Какао для веб-сайта? Это стандартная библиотека Mac OS для графического интерфейса пользователя, связанных структур данных и различных помощников. Apple раньше продвигала что-то под названием WebObjects, которое было похоже на Cocoa для Интернета, но я ничего не слышал об этом в течение многих лет. Я не думаю, что Какао будет работать для веб-сайта, если вы просто хотите написать собственный веб-сервер с графическим интерфейсом в Какао.