假设我有一些编译并适用于普通i386和x86_64拱门的代码。
在DOS / Windows中,可以烘焙一个MZ-PE可执行文件,它可以在DOS中有一个功能,在Windows中有另一个功能。或者,在OSX中,可以将i386和PPC拱结合在一个二进制文件中。
Linux中的i386 + x86_64怎么样(没有multiarch等等)?是否有可能,我该怎么做?
答案 0 :(得分:1)
我以前使用的shell脚本从文件的后面提取应用程序的压缩副本。在Solaris上支持sparc,x86。这是完成它的一种相对简单的方法,但它仅依赖于相关平台的相关二进制文件。
也就是说,在bin-i386
和bin-x86_64
目录中复制并在stub shell脚本中使用$(uname -m)
来指向相关的二进制文件要容易得多。
#!/bin/bash -p
exec ${0%/*}/bin-$(uname -m)/${0##*/} "$@"
如果您尝试为非多拱64位系统发送32位二进制文件,并且因为大多数应用程序将使用动态链接进行编译,那么 libaries 是另一个问题。如果您不打算使用multiarch,那么您* 有 *来发布所有相关库(包括运行时链接器ld.so
),并使用LD_LIBRARY_PATH
来选择合适的库。