Компиляция для многих дистрибутивов Linux

Короче говоря, я собираюсь выпустить приложение, написанное на OCaml, и я планировал распространять его по исходному коду.Проблема в том, что система разработки OCaml не является чем-то легким и не настолько распространенным для установки, поэтому я хотел бы выпустить ее также в двоичном виде для различных операционных систем.Windows не создает проблем, так как я могу скомпилировать его через Cygwin и распространить его с необходимыми DLLOS X тоже не проблема, так как я могу скомпилировать и легко распространять ее (никаких внешних зависимостей от того, что я пробовал)При поступлении в Linux возникают проблемы, так как я не знаю, какой из них лучше всего скомпилировать и распространить.Сама программа ни от чего не зависит (все статически связано), но как охватить многие дистрибутивы?У меня есть сервер 10 Ubuntu, виртуализированный с архитектурой amd64, я использовал эту машину для тестирования программы под Linux, и все работает нормально.Конечно, если я попытаюсь переместить бинарный файл в 32-битную Ubuntu, он перестанет работать, и я не смог попробовать разные дистрибутивы ... Есть ли хитрости для решения такого рода проблем?(это кажется повторяющимся)например:Могу ли я скомпилировать 32-битные и 64-х с одной машины?будет ли двоичный файл, скомпилированный в Ubuntu, работать и в других дистрибутивах?Какие "ветви" я должен учитывать, когда хочу охватить как можно больше дистрибутивов?
4 голоса | спросил Jack 17 32010vEurope/Moscow11bEurope/MoscowWed, 17 Nov 2010 04:17:06 +0300 2010, 04:17:06

5 ответов


0
Как правило, вы можете создавать 64- и 32-битные двоичные файлы на 64-битной машине с относительной легкостью - т.е. дистрибутив обычно имеет надлежащую поддержку в своих пакетах компилятора, и вы действительно можете протестировать свою сборку.Обратите внимание, что ОС тоже должна быть 64-битной, а не только процессор.Статические двоичные файлы обычно работают везде, при условии адекватной поддержки со стороны ядра и процессора - следите за опциями вашего компилятора, чтобы убедиться в этом.Они - ваш лучший выбор для совместимости.Общие библиотеки могут быть проблемой.Чтобы справиться с этим, двоичные файлы, связанные с общими библиотеками, могут быть связаны с этими библиотеками и, при необходимости, запускаться со скриптом загрузчика.Вы должны, по крайней мере, ориентироваться на Debian /Ubuntu с пакетами dpkg, Redhad /Fedora /Mandriva с RPM и SUSE /OpenSUSE с RPM снова (я упомяну эти два случая RPM отдельно, потому что вам может потребоваться создать отдельные пакеты для этих «семейств» дистрибутивов),Вы также должны предоставить .tar.bz2 или .run установщик для остальных.Вы можете взглянуть на опции, предоставляемые, например, Oracle для Java и VirtualBox, чтобы увидеть, как они предоставляют свое программное обеспечение.
ответил thkala 17 32010vEurope/Moscow11bEurope/MoscowWed, 17 Nov 2010 04:34:19 +0300 2010, 04:34:19
0
Лучшее решение - выпустить исходный код под бесплатной лицензией.Вы можете упаковать его для пары дистрибутивов самостоятельно (например, Debian , Fedora ), а затем сотрудничать с другими людьми, портируя его другим.Сопровождающие часто выполняют большую часть этой работы только с несколькими необходимыми изменениями в исходной версии.
ответил Matthew Flaschen 17 32010vEurope/Moscow11bEurope/MoscowWed, 17 Nov 2010 04:21:02 +0300 2010, 04:21:02
0
Да, вы можете скомпилировать 32- и 64-битные файлы на одном компьютере: http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html.Скорее всего, бинарный файл, работающий в Ubuntu, будет работать в других дистрибутивах, единственное, о чем вам следует беспокоиться, если вы используете разделяемые библиотеки (особенно если вы используете какую-то инфраструктуру GUI или тому подобное).Не уверен, что вы подразумеваете под веткой, но если вы говорите о дистрибутиве, я бы использовал самый ванильный дистрибутив Ubuntu ...
ответил Matthieu 17 32010vEurope/Moscow11bEurope/MoscowWed, 17 Nov 2010 04:31:47 +0300 2010, 04:31:47
0
Вы можете посмотреть на его сборку в сервисе сборки openSUSE .Хотя он запускается openSUSE, он создает пакеты для:openSUSE SUSEКорпоративные вариантыMandivaмягкая фетровая шляпаRed Hat Enterprise /CentOSDebianUbuntu
ответил John 17 32010vEurope/Moscow11bEurope/MoscowWed, 17 Nov 2010 12:55:30 +0300 2010, 12:55:30
0
Я бы порекомендовал вам просто упаковать 32- и 64-битные двоичные файлы для .deb и RPM, чтобы вы могли работать с большинством основных дистрибутивов (Debian, Fedora, openSUSE, Ubuntu).Просто дайте четкие инструкции по установке, касающиеся зависимостей, командной строки для других дистрибутивов и т. Д., И у вас не должно быть особых проблем с распространением исходного архива.
ответил Rafe Kettler 17 32010vEurope/Moscow11bEurope/MoscowWed, 17 Nov 2010 04:24:08 +0300 2010, 04:24:08

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132