如何在64位gcc上编译C和C++32位程序

分享于 

2分钟阅读

C

  繁體

大多数都是C和C 的编译器(gcc或clang),如今带有默认的64位版本。

在继续之前,确认系统中当前安装了哪个gcc位版本,只需在Linux终端上键入以下命令。


Command: gcc -v
Output 
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
......................
......................


因此,第四行Target:x86_64-linux-gnu确认我们正在运行64-bit gcc。

例如,要通过Linux终端编译geek.c文件,必须使用-m32标志编写以下命令。


Command: gcc -m32 geek.c -o geek

如果出现如下错误:


fatal error: bits/predefs.h: No such file or directory

表示缺少一个标准的gcc库,在这种情况下,你必须使用以下命令安装gcc-multlib:


For C language:
sudo apt-get install gcc-multilib
For C++ language:
sudo apt-get install g++-multilib


在此之后,你将能够在64-bit系统上编译32-bit二进制文件。

在添加32-bit标志后,如何检查程序是否用"-m32型"编译?通过下面的程序轻松检查。

filter_none
// C program to demonstrate difference// in output in 32-bit and 64-bit gcc// File name: geek.c#include<stdio.h>intmain(){printf("Size =%lu",sizeof(size_t));}

用这两个不同的命令在Linux中编译上面的程序,默认64-bit编译,


Input: gcc -m64 geek.c -o out
Output: ./out
Size = 8

强制编译32-bit,


Input: gcc -m32 geek.c -o out
Output: ./out
Size = 4



COM  BIT  32位  GCC  
相关文章