如何将C代码编译为32位代码并在64位应用程序中运行?我可以使用什么工具链?

时间:2014-09-15 19:30:09

标签: c linux windows x86 x86-64

我想编译C代码,就像它是32位应用程序(因此sizeof(void *)将是4),但是在64位应用程序中运行它。

我可以保证此代码不会收到指向> 4 GB地址空间等的指针

我只需要一个工具链就可以了。

2 个答案:

答案 0 :(得分:3)

Linux有一个x32 memory model,它是带有32位指针的64位代码。这似乎更适合“请不要破坏在unsigned int中存储指针的代码!”用法。但整个应用程序应该使用该目标构建。

但是,在同一进程中组合x32和x86_64代码比x86和x86_64困难得多,因为它不需要CPU切换模式。

答案 1 :(得分:1)

  

如何将C代码编译为32位代码并在64位应用程序中运行?

在Windows和Linux上,您无法在64位进程中执行32位代码。或者反之亦然。