是否可以使用可在executable
和32-bit
计算机上运行的 c / c ++ 进行64-bit
?如果是这样,我该怎么做?
答案 0 :(得分:5)
是的,构建一个32位可执行文件。它可以在64位机器上运行。
答案 1 :(得分:4)
一般建议(如answered by Antwane)是构建一个32位可执行文件。如果操作系统允许,它可能会在64位机器上运行。在Linux,Windows和某些版本的MacOSX上就是这种情况(但您需要检查)。但是,32位可执行文件通常使用32位virtual address space(在Linux上也读取x32)并且无法从当前可用的RAM中获利(因为每个32位进程使用不超过4千兆字节)虚拟内存,通常最多3)。
一些罕见的operating systems接受fat binaries,但它们今天已经不合时宜了。
您可以用某种操作系统特定的方式编写脚本(例如Unix上的shell script或Windows上的PowerShell脚本)或检测处理器是否为64位的包装器。然后运行64位可执行文件。
您可以发送可执行文件的32位和64位变体(并让您的用户决定它将运行哪个)。
您可以考虑使用某些github许可证发布(例如在source code)您的计划的open source,并将编译负担留给您的用户。
您可能会考虑编译C ++代码(可能使用Emscripten)到WebAssembly字节代码,并希望您的用户将您的东西运行到他的浏览器中。但这可能不会轻易起作用(因为WebAssembly会为沙盒添加许多限制,因此在这种情况下您可能无法使用所有C ++ 11标准库。)
答案 2 :(得分:2)
64位计算机中的32位可执行文件工作但是在Windows的情况下,在64位计算机上运行32位应用程序时,某些win32 api可能无法正常工作
答案 3 :(得分:1)
您可以将32
和64
位放在一个包中。
如果文件中的5th
字节是1
,则它是32-bit
二进制文件。如果它是2,它是64-bit
。为了增加健全性检查:
"ELF"
,1
:它是32位ELF二进制文件。"ELF"
,2
:它是64位ELF二进制文件。:
x86 : PE L
x64 : PE d†
此外,您可以确认文件实用程序(例如来自cygwin
)将区分32-bit
和64-bit
可执行文件。它们如下所示:
32.exe: PE32 executable (GUI) Intel 80386, for MS Windows
64.exe: PE32+ executable (console) x86-64, for MS Windows