我碰巧在 Linux 上安装了 model sim VHDL 模拟器。手册说它只支持 RedHat 或 Suse,但我只是尝试在 Ubuntu 上安装它。而且,我可以毫无问题地安装它。
- linux 二进制文件是否适用于各种发行版?我的意思是,如果我在 distrubution A 上制作一个程序,我可以确定它可以在任何 linux 上运行吗?
- 为什么大多数商业程序供应商都说程序是在特定发行版上运行的?(主要是 Redhat 和 Suse,不是 ubuntu)
我碰巧在 Linux 上安装了 model sim VHDL 模拟器。手册说它只支持 RedHat 或 Suse,但我只是尝试在 Ubuntu 上安装它。而且,我可以毫无问题地安装它。
这是两个问题:
Linux 二进制文件对所有发行版都通用吗?
这取决于:
为什么许多商业程序说它们只适用于一个或几个发行版?
因为有大量的 Linux 发行版,没有人愿意在所有发行版上测试他们的程序。
商业供应商通常会说他们只支持他们测试过他们的软件的发行版。它可能适用于其他发行版,也可能不适用,从供应商的角度来看,关键是如果它不适用于他们不支持的发行版,您就不能抱怨。
选择哪些发行版进行测试取决于供应商希望他们的客户使用什么。商业/专业程序通常选择企业发行版,可能通过类似于“为他们的操作系统付费的人更有可能为我们的软件付费”的推理,可能只是通过计算现有客户使用的发行版。
另请参阅 Mark Shuttleworth(我们首先拥有 Ubuntu 的原因)关于Ubuntu 和 Debian 之间的二进制兼容性- Debian 是最接近Ubuntu 的发行版。
RedHat 和 SUSE 都拥有悠久的企业 Linux 传统,并设法为它们生产和测试这些软件包。随着时间的推移,将会有更多经过测试可以在 Ubuntu 上运行的软件包示例。事实上,自去年以来,许多此类软件包都经过测试可与 Ubuntu 一起使用。随着 Canonical 与更多供应商达成协议,将会有更多 Ubuntu 认证的软件包。
对于您的第一个问题:如果您想制作一个在所有发行版上运行的程序,请创建一个静态(与动态相比)可执行文件。可执行文件
statically-linked
不依赖于系统库,因此可以在发行版之间工作,只要架构(例如 Intel/AMD)相同。这是一个程序,
让我们正常编译,
那么,你能用那个 VHDL 程序做什么呢?获取 .rpm 文件并使用alien将其转换为 .deb 。然后,安装。如果它有效,你就可以了。如果它不起作用,请使用
ldd
以确定缺少哪个库文件。在最坏的情况下,为其他 Linux 发行版创建一个虚拟机并在那里运行程序。我第二次 jg-faustus 的回复,但是,您还需要注意包格式。即使可执行文件本身是可移植的并且所有必要的库都存在,不同的发行版将文件放在不同的位置并使用不同的工具来管理已安装的包。如果供应商将他们的产品打包为 RPM 包,您将不得不使用像'外星人'在像Ubuntu这样的基于DEB的发行版下转换和安装它。
如果他们将他们的软件作为源代码分发,那么您也可以自己编译它,此时可执行文件将针对您的特定系统进行定制(但 ubuntu 包管理器不会知道它)。