从两种代码中可以看出来,64位汇编首先mov使用的是movq,32位是movl,而且64位调用printf使用的通用寄存器传递参数,而32位使用的是pushl压栈来传递参数的。 但是64位gcc编译生成的32位汇编程序运行就会报错,所以需要让gcc兼容32位汇编,首先在编译的时候加上-m32参数选项,但是光这样,编译的时候会报错,还需要下载gcc的32...
是通过使用特定的编译选项来实现的。在gcc中,可以使用"-m32"选项来指定编译为32位程序。具体步骤如下: 1. 打开终端或命令提示符,进入要编译的源代码所在的目录。 2. 使用以下命令进行编译...
从两种代码中可以看出来,64位汇编首先mov使用的是movq,32位是movl,而且64位调用printf使用的通用寄存器传递参数,而32位使用的是pushl压栈来传递参数的。 但是64位gcc编译生成的32位汇编程序运行就会报错,所以需要让gcc兼容32位汇编,首先在编译的时候加上-m32参数选项,但是光这样,编译的时候会报错,还需要下载gcc的32...
http://mirrors.cloud.aliyuncs.com/centos/6/updates/x86_64/Packages/glibc-2.12-1.212.el6_10.3.x86_64.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found" Trying other mirror. http://mirrors.aliyun.com/centos/6/updates/x86_64/Packages/glibc-2.12-1.212.el...
用MinGW编译,我发现加上 -g -m32 参数之后编译出的32位Windows应用程序不能用gdb调试,但是64位编译...
在64位Linux环境下,使用GCC编译32位可执行程序并不困难,但需要确保你的编译环境具备相应支持。默认安装的GCC编译器可能无法直接编译64位程序,因为缺少64位机器指令相关的文件,导致在编译过程中出现类似错误:"In file included from /usr/include/features.h:378, from /usr/include/assert.h:37, ...
第一条语句用于显示当前程序的位数。如果编译为32位版,将会显示“bits: 32”;如果编译为64位版,将会显示“bits: 64”。 第二条语句是一条断言,需要argc变量大于1。如果编译为debug版,若运行时未加命令参数,该断言失败,于是输出错误信息并终止程序;如果编译为release版,所有断言被屏蔽,不会有错误信息。
理论上安装支持环境,之后 64 位的 gcc 编译成 32 位程序,就加 -m32 参数即可。当然还一个办法是装个 32 位的 gcc 。另外,交叉编译也适用于 x86 架构。不过这么编译经常会出现各种问题,所以编译 32 位的程序,最好还是用 32 位系统。不一定重装,用 chroot 和 setarch 命令配合即可弄出一个 32 ...
gcc编译器原先是基于Unix,Unix-like系统的编译器,不过现在已经移植到了Windows下,windows版可以让用户更加方便的对语言进行编译。gcc编译器windows版可以让用户在命令列下键入一些命令参数,以便决定每个输入命令使用语言编译器,并为那些命令去选择合适语言编译器进行编译操作。
我试图从64位gcc编译一个32位系统的程序.我使用Windows 10。我确认了gcc版本的由gcc -v,它输出Target: x86_64-w64-mingw32。节目内容如下,#include<stdio.h>int main(void){ printf("The Size is: %llu\n", sizeof(void*)); return 0;}我试图用gcc -m32