0

假设我有一些代码可以编译并适用于普通 i386 和 x86_64 拱门。

在 DOS/Windows 中,可以烘焙单个 MZ-PE 可执行文件,它可以在 DOS 中具有一种功能,在 Windows 中具有另一种功能。或者,在 OSX 中,可以将 i386 和 PPC 架构组合成单个二进制文件。

Linux 中的 i386+x86_64 怎么样(没有多架构之类的东西)?有可能吗,我该怎么做?

4

1 回答 1

1

我曾经使用 shell 脚本从文件后面提取应用程序的压缩副本。在 Solaris 上支持 sparc、x86。这是一种相对简单的实现方式,但它仅依赖于使用相关平台的相关二进制文件。

也就是说,在bin-i386andbin-x86_64目录中有副本并$(uname -m)在存根 shell 脚本中使用以指向相关的二进制文件要容易得多,例如

#!/bin/bash -p

exec ${0%/*}/bin-$(uname -m)/${0##*/} "$@"

如果您尝试为非多架构 64 位系统提供 32 位二进制文​​件,并且因为大多数应用程序将使用动态链接进行编译,那么是一个额外的问题。如果您不打算进行多架构,那么您 *必须* 提供所有相关库(包括运行时链接器ld.so),并使用 anLD_LIBRARY_PATH来选择适当的库。

于 2013-10-03T07:20:35.703 回答