Answers:
这是两个问题:
Linux二进制文件对所有发行版都通用吗?
这取决于:
为什么许多商业程序说它们只能在一个或几个发行版上工作?
因为有很多Linux发行版,并且没有人愿意在所有发行版上测试他们的程序。
商业供应商通常会说他们仅支持对其软件进行测试的发行版。从供应商的角度来看,它可能会或可能不会在其他发行版上起作用,重点是,如果它不能在他们不支持的发行版上起作用,您就可以抱怨。
选择哪种发行版本进行测试取决于供应商期望其客户使用的版本。商业/专业程序通常选择企业发行版,可能是通过类似于“为自己的操作系统付费的人更可能为我们的软件付费”的推理,可能只是通过计算现有客户使用的发行版。
关于Ubuntu和Debian之间的二进制兼容性,另请参阅Mark Shuttleworth(这是我们首先拥有Ubuntu的原因的家伙)-Debian是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 外星人。然后,安装。如果可行,您就可以了。如果它不起作用,请使用ldd
找出缺少的库文件。在最坏的情况下,请为其他Linux发行版创建虚拟机,然后在其中运行程序。