使用
gcc -m32 myprog.c
应该在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>
我该如何解决这个问题?
如果我不使用-m32
它可以工作,但使用64位指令。
答案 0 :(得分:78)
要在64位Linux版本上编译32位二进制文件,您必须安装libx32gcc
开发包和32位GNU C库
试试这个
sudo apt-get install libx32gcc-4.8-dev
和
sudo apt-get install libc6-dev-i386
答案 1 :(得分:11)
您需要gcc multilib支持。安装包gcc-multilib
。 E.g:
sudo apt-get install gcc-multilib
答案 2 :(得分:1)
我遇到了同样的问题。当我试图在64位ubuntu版本中构建32位文件时。
您可以通过将lib版本切换为64位来构建 在netbeans ( - &gt; 项目属性 - &gt; C编译器 - &gt; 其他选项)设置为
-shared -m64
答案 3 :(得分:0)
要解决此问题,我们首先需要知道哪个软件包将提供文件 sys / cdefs.h
在基于CentOs / RHEL的系统中,您可以通过运行以下命令
找到它yum provides '*sys/cdefs.h'
同样,在Debian / Ubuntu系统中,您可以通过运行
找到它apt-file search 'sys/cdefs.h'
注意:如果系统上尚未安装apt-file软件包,请使用命令
安装它apt-get install apt-file
上述两个命令都将扫描相应的包管理系统数据库,即RPM / Apt,并告知提供以“sys / cdefs.h”结尾的文件的包的名称。
从命令列出的软件包安装相应的软件包 像
在CentOs / RHEL上:
yum install glibc-headers
在Debian / Ubuntu上
apt-get install libc6-dev
此方法不仅对此特定问题有用,而且报告某些包提供的某些必需文件的任何类似问题都不存在。