假设我有一些编译并适用于普通i386和x86_64拱门的代码。用于i386和x86_64的Linux单个二进制文件
在DOS/Windows中,可以烘烤一个MZ-PE可执行文件,它可以在DOS中有一个功能,在Windows中可以有另一个功能。或者,在OSX中,可以将i386和PPC拱门合并为一个二进制文件。
Linux中的i386 + x86_64怎么样(没有多元化和这样的东西)?有没有可能,我该怎么做?
假设我有一些编译并适用于普通i386和x86_64拱门的代码。用于i386和x86_64的Linux单个二进制文件
在DOS/Windows中,可以烘烤一个MZ-PE可执行文件,它可以在DOS中有一个功能,在Windows中可以有另一个功能。或者,在OSX中,可以将i386和PPC拱门合并为一个二进制文件。
Linux中的i386 + x86_64怎么样(没有多元化和这样的东西)?有没有可能,我该怎么做?
我用的是从提取该文件在以后的应用程序的压缩副本的shell脚本。在Solaris上受支持的sparc,x86。这是一个相对简单的完成方法,但它只依赖相关平台的相关二进制文件。也就是说,在一个bin-i386
和bin-x86_64
目录中有副本并且在存根外壳脚本中使用$(uname -m)
可以更容易地指向相关的二进制文件,例如,
#!/bin/bash -p
exec ${0%/*}/bin-$(uname -m)/${0##*/} "[email protected]"
如果你想出货的32位二进制文件对于非多拱64位系统,并且因为大多数应用程序将与动态链接进行编译,然后libaries是另外一个问题。如果你不打算做多元化,那么你* 有 *发运所有相关的库(包括运行时链接器ld.so
),并使用LD_LIBRARY_PATH
来挑选合适的库。
是的,我注意到我雾说,所以我改变了最后一段。它实际上代表了一种情况,我不得不处理在过去 – Petesh
事实上似乎没有更好可以在ELF水平来完成。 – Ruslan