Both RedHat and SUSE have long enterprise Linux tradition and managed to get those packages produced and tested for them. As time passes, there will be more examples of packages that have been tested to work on Ubuntu. In fact, many such packages since last year come as tested to work with Ubuntu. As Canonical makes agreements with more vendors, there will be more Ubuntu-certified packages.
For your first question: If you want to make a program that runs on all distributions, create a static (compared to dynamic) executable. A statically-linked
executable does not depend on the system libraries, therefore can work between distributions, as long as the architecture (such as Intel/AMD) is the same.
Here is a program,
int main(void)
{
printf("Hello, World!\n");
return 0;
}
Let's compile as normal,
$ 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
$
So, what can you do with that VHDL program? Get the .rpm file and convert it to .deb using alien. Then, install. If it worked, you are ok. If it does not work, use ldd
to figure out which library file is missing. On the worst case scenario, create a virtual machine for those other Linux distributions and run the program there.