适用于i386和x86_64的Linux单二进制文件

时间:2013-10-03 07:03:10

标签: linux executable 32bit-64bit

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

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

Linux中的i386 + x86_64怎么样(没有multiarch等等)?是否有可能,我该怎么做?

1 个答案:

答案 0 :(得分:1)

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

也就是说,在bin-i386bin-x86_64目录中复制并在stub shell脚本中使用$(uname -m)来指向相关的二进制文件要容易得多。

#!/bin/bash -p

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

如果您尝试为非多拱64位系统发送32位二进制文​​件,并且因为大多数应用程序将使用动态链接进行编译,那么 libaries 是另一个问题。如果您不打算使用multiarch,那么您* *来发布所有相关库(包括运行时链接器ld.so),并使用LD_LIBRARY_PATH来选择合适的库。