在64位Linux操作系统上编译32位程序会导致致命错误

And*_*eaF 39 c c++ linux ubuntu

运用

gcc -m32 myprog.c
Run Code Online (Sandbox Code Playgroud)

应该在32位版本中编译该文件myprog.c.

不幸的是我收到此错误:

In file included from /usr/include/stdio.h:27:0,
                 from myprog.c:1:
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory
#include <sys/cdefs.h>
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?

如果我不使用-m32它工作,但使用64位指令.

Sil*_*orm 79

要在64位Linux版本上编译32位二进制文​​件,您必须安装libx32gcc开发包和32位GNU C库

试试这个

sudo apt-get install libx32gcc-4.8-dev
Run Code Online (Sandbox Code Playgroud)

sudo apt-get install libc6-dev-i386
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,BTW libc6-dev-i386将安装libx32gcc作为依赖,因此无需手动安装:D (8认同)

Ped*_*zzi 11

你需要gcc multilib支持.安装包gcc-multilib.例如:

sudo apt-get install gcc-multilib
Run Code Online (Sandbox Code Playgroud)