【问题标题】:Building 64bit libraries构建 64 位库
【发布时间】:2010-12-09 09:11:44
【问题描述】:

我想为我的一些 C++ 组件构建 64 位库。是否需要直接编译/链接在物理机上运行的操作系统中的库?或者我可以使用在 ESX 服务器中作为虚拟机运行的操作系统来构建库吗?如果我在虚拟机中构建,我需要处理任何事情吗?请指教

我对 32/64bit for linux 很感兴趣。

提前致谢!

【问题讨论】:

  • 我以为您只需要选择将其编译为 64 位?是不是也要在 64 位机器上做?
  • 如果我能做到的话,我可以在任何机器上做到这一点。

标签: c++ linux build 64-bit


【解决方案1】:

如果客户操作系统是 64 位并且您有 64 位编译器,那么您没有理由不能在虚拟化操作系统中编译和运行 64 位库/应用程序。

【讨论】:

  • 以后在物理机上运行会不会出问题?
  • 当您运行虚拟化 64 位操作系统时,出于所有意图和目的,您的 运行在 64 位硬件上。因此二进制文件将在物理 64 位硬件上运行。但是您应该确保您没有使用可能与管理程序挂钩的特殊编译器构建。如果您使用像普通的 GCC 编译器这样的东西,这不太可能发生。
【解决方案2】:

根据编译器(您使用的是什么?),您甚至可能只需将正确的选项传递给它,它就会在您想要的任何地方编译它 - 即使在 32 位机器上也是如此。

【讨论】:

  • 我在 32 位 SuSE 7.3 机器上安装了 gcc 2.96。我将它用于 32 位。当我尝试 -m64 时,它没有识别标志,并且在另一台机器上它要求 64 位系统库。我认为在 64 中可以构建 32 位,但反过来不行。
【解决方案3】:

这有点特定于平台。例如:在 Windows 上,我在 32 位机器上构建 64 位二进制文​​件(我安装了 VS 的 64 位编译器)并确保目标上提供了正确的可再发行包。

【讨论】:

  • 我同意。我做同样的事情。我特别想知道Linux。我将编辑标签。
  • 这可能是造成问题的原因。 Multilib 将提供额外的目标平台二进制文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
  • 2011-11-20
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多