Мне довелось установить VHDL-симулятор модели sim на Linux. В руководстве сказано, что он поддерживает только RedHat или Suse, но я только что попытался установить его на Ubuntu. И я мог бы установить его без проблем.
И RedHat, и SUSE имеют давние корпоративные Linux-традиции и смогли изготовить и протестировать эти пакеты. Со временем будет больше примеров пакетов, которые были протестированы для работы в Ubuntu. На самом деле, многие такие пакеты с прошлого года проходят тестирование на работу с Ubuntu. Поскольку Canonical заключает соглашения с большим количеством поставщиков, будет больше пакетов, сертифицированных Ubuntu.
По первому вопросу: если вы хотите создать программу, которая будет работать во всех дистрибутивах, создайте статический (по сравнению с динамическим) исполняемый файл. Исполняемый файл statically-linked
не зависит от системных библиотек, поэтому может работать между дистрибутивами, если архитектура (например, Intel / AMD) одинакова.
Вот программа,
int main(void)
{
printf("Hello, World!\n");
return 0;
}
Давайте скомпилируем как обычно,
$ gcc helloworld.c -o helloworld
$ ./helloworld
Hello, World!
$ ldd helloworld
libc.so.6 => /lib/libc.so.6 (0x00007f3cc3481000)
...
$
$ gcc helloworld.c -static -o helloworld_static
$ ./helloworld
Hello, World!
$ ldd helloworld_static
not a dynamic executable
$
Итак, что вы можете сделать с этой программой VHDL? Получите файл .rpm и преобразуйте его в .deb, используя alien . Затем установите. Если это сработало, ты в порядке. Если это не работает, используйте ldd
, чтобы выяснить, какой файл библиотеки отсутствует. В худшем случае создайте виртуальную машину для этих других дистрибутивов Linux и запустите программу там.
Я второй ответ j-g-faustus, но вы также должны быть осторожны с форматом пакета. Даже если сами исполняемые файлы являются переносимыми и присутствуют все необходимые библиотеки, разные дистрибутивы размещают файлы в разных местах и используют разные инструменты для управления установленными пакетами. Если поставщик упаковывает свой продукт как пакет RPM, вам придется использовать пакет типа Alien ', чтобы конвертировать и установить его в дистрибутиве на основе DEB, например Ubuntu.
Если они распространяют свое программное обеспечение в виде исходного кода, то вы также можете скомпилировать его самостоятельно, после чего исполняемый файл будет адаптирован для вашей конкретной системы (но менеджер пакетов ubuntu не узнает об этом ).
Это два вопроса:
Является ли бинарный файл Linux универсальным для всех дистрибутивов?
Это зависит от:
Почему многие коммерческие программы говорят, что они работают только на одном или нескольких дистрибутивах?
Поскольку существует очень большое количество дистрибутивов Linux , и никто не хочет тестировать свою программу на всех них.
Коммерческий поставщик обычно говорит, что он поддерживает только те дистрибутивы, на которых они тестировали свое программное обеспечение. Он может работать или не работать в других дистрибутивах, с точки зрения поставщика, дело лишь в том, что вы не можете жаловаться, если он не работает в дистрибутиве, который они не поддерживают.
Какие дистрибутивы будут выбраны для тестирования, зависит от того, что продавец ожидает от своих клиентов. Коммерческие / профессиональные программы обычно выбирают корпоративные дистрибутивы, возможно, исходя из соображений, подобных «люди, которые заплатили за их ОС, с большей вероятностью будут платить за наше программное обеспечение», возможно, просто путем подсчета дистрибутивов, используемых их существующими клиентами.
См. Также Марк Шаттлворт (парень, который является причиной того, что у нас есть Ubuntu, во-первых) о бинарной совместимости между Ubuntu и Debian - Debian является ближайшим дистрибутивом относительно Ubuntu.