Тестирование D-программ на FreeBSD для компиляции на OSX

У меня никогда не было компьютера Apple. Некоторое время я запускаю Ubuntu на своем ноутбуке и пишу много программных кодов на D2. Все они являются терминальными приложениями, графического интерфейса нет.

Сейчас я планирую купить Macbook, но я не уверен, что мои программы будут работать так, как ожидается на OSX. Я не могу его протестировать, но я подумал, что если я установлю FreeBSD и скомпилирую на нем свои коды, возможно, он будет скомпилирован и в OSX. У кого-нибудь есть опыт или знания об этом? Поскольку я в основном пишу программы для серверов Linux, и если OSX поставит меня в сложное положение, я могу начать рассматривать обычный ноутбук.

PS Если кто-то спросит, я ненавижу графические приложения в Linux, я хочу OSX, поэтому я могу запускать Photoshop и т. Д., А также запускать и компилировать свои программы.


PS Во многих случаях используются либо библиотеки Phobos, либо коды POSIX. Но есть доступ к папкам /etc, /var для доступа к файлам. Shared Memory и Unix Sockets также используются.

2 ответа

Решение

Скорее всего, действительно хорошо, что если ваше программное обеспечение компилируется на двух разных платформах UNIX, оно также будет компилироваться на третьей. Но вы не можете ожидать без тестирования на Mac OS X у вас не будет особых проблем.

Справочники

Чтобы сделать ваше приложение более переносимым, вам действительно следует принять во внимание, что каждая ОС хранит файл конфигурации в другом месте. Например, Ubuntu использует /etc, FreeBSD использует / usr / local / etc, а Mac OS X использует /private/etc (но предоставляет символическую ссылку на /etc).

Использование / var более универсально.

сеть

Для сокетов UNIX код похож. Если у вас есть TCP, есть небольшие незначительные различия между Linux с одной стороны и FreeBSD и Mac OS X с другой стороны, например, тот факт, что соединение tcp6 будет прослушивать только ipv6 или оба на ipv4 и ipv6. Но в целом все хорошо и совместимо с этой стороны.

Общая память

Общая память обычно зависит от внешних библиотек. Действительно, это действительно зависимая от ОС область. Но, насколько я могу судить по http://www.cs.cf.ac.uk/Dave/C/node27.html, это обрабатывается D, так что вас это не должно беспокоить.

Другая стратегия

Хорошей стратегией может быть создание виртуальной машины для проверки, компилируется ли ваш код непосредственно в Mac OS X.

http://lifehacker.com/5938332/how-to-run-mac-os-x-on-any-windows-pc-using-virtualbox дает решение, и https://askubuntu.com/questions/303725/virtualbox-how-to-install-os-x-guest-under-ubuntu-host поддерживает идею, которая должна работать и в Ubuntu.

С этим связана юридическая проблема, поскольку Apple EULA ограничивает установку Mac OS X на компьютеры, созданные Apple. Поскольку договор не может нарушать местные законы, вопрос о применении этого пункта в различных юрисдикциях остается открытым.

Сейчас я планирую купить Macbook, но я не уверен, что мои программы будут работать так, как ожидается на OSX.

Если ваши программы не используют специфичные для ОС функции (например, они импортируют core.sys.freebsd.* или же core.sys.linux.*), Программы D должны нормально работать на любой платформе. (Нет гарантии, но скорее всего.) В вашем случае это даже более вероятно, так как Linux, FreeBSD и OS X все POSIX-совместимы.

Другие вопросы по тегам