І RedHat, і SUSE мають давню традицію Linux для 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 за допомогою чужорідного . Потім встановіть. Якщо це спрацювало, ви все в порядку. Якщо це не працює, використовуйте, ldd
щоб визначити, який файл бібліотеки відсутній. У гіршому випадку створіть віртуальну машину для цих інших дистрибутивів Linux і запустіть програму там.