gpt4 book ai didi

c++ - 两台计算机必须有什么共同点才能运行相同的可执行文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:51 24 4
gpt4 key购买 nike

我正在开发一个跨平台应用程序,我需要确定机器 B 是否能够运行在机器 A 上编译的应用程序。

我正在使用 Qt,我已经明白我需要将 Qt 库与应用程序打包或静态链接到 Qt 本身。

我也明白在 Windows 上编译的东西不能在 Linux 上运行。

但是,还有一些其他 vector 我不确定它们的重要性。以下是我目前的理解总结:

影响可移植性

  • 操作系统(Windows、Mac、Linux)
  • 第三方库的可用性(Qt、静态与动态链接等)

可能影响便携性

  • Linux 风格(Ubuntu、Red Hat、Fedora)
  • 架构(32 位或 64 位)
  • 操作系统版本(Windows 7 与 Windows XP、Rhel5 与 Rhel6)
  • 指令类型(i386、x64)

可能影响便携性 的项目中,哪些实际上会影响?有什么我遗漏的吗?

最佳答案

全部。至少有可能。

如果两台不同的机器没有二进制兼容性(例如它们运行在不同的体系结构上,或者与不兼容的系统),那么将无法创建将在两者上运行的单个二进制文件。 (或者...是否正在运行Linux 上 Wine 下的 Windows 程序算吗?)

否则,这取决于。您提到第三方库:如果它们是动态加载的,它们必须存在,但是有始终静态链接,并且可能有部署方式动态库,这样它就在那里。

32 位与 64 位是架构上的差异:32 位程序不会在 64 位环境中运行,反之亦然。但是大多数现代系统都会使这两种环境都可用如果他们在 64 位机器上。

操作系统的风格和版本等问题更为复杂。如果您使用最近添加到操作系统的任何功能,当然,你将无法在装有操作系统的机器上运行添加。否则:低级系统的主要原因动态加载库是为了支持转发和向后兼容性;我听说它并不总是有效,但我怀疑任何问题都涉及一些比较罕见的功能。 (对此有限制。现代 Windows 程序将不会在 Windows95 下运行,反之亦然。)

还有一个问题是各种可选的是否软件包已安装。 Qt 需要 Linux 下的 X Windows 或索拉里斯;我在很多 Linux 和 Solaris 机器上工作过它没有安装(甚至没有显示器的地方设备)。

还有一个问题是它是否可以正常运行。它可能在比您测试的机器更小、更旧的机器上运行它,但它最终可能会疯狂地寻呼,直到它变得无法使用。

关于c++ - 两台计算机必须有什么共同点才能运行相同的可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17619985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com