を使用して
gcc -m32 myprog.c
ファイルmyprog.c
を32ビットバージョンでコンパイルする必要があります。
残念ながら、私はこのエラーを受け取ります:
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ビット命令を使用します。
64ビットLinuxバージョンで32ビットバイナリをコンパイルするには、libx32gcc
開発パッケージと32ビットGNU Cライブラリをインストールする必要があります
これを試して
Sudo apt-get install libx32gcc-4.8-dev
そして
Sudo apt-get install libc6-dev-i386
Gcc multilibサポートが必要です。パッケージをインストールするgcc-multilib
。例えば。:
Sudo apt-get install gcc-multilib
この同じ問題に遭遇しました。 64ビットのubuntuバージョンで32ビットのファイルをビルドしようとしていたとき。
netBeansでlibバージョンを64ビットに切り替えることでビルドできます(-> プロジェクトプロパティ-> Cコンパイラ-> 追加オプション)に設定
-shared -m64
この問題を解決するには、まずどのパッケージがファイルを提供するかを知る必要があります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
このアプローチは、この特定の問題だけでなく、存在しないパッケージによって提供される必要なファイルを報告している同様の問題にも役立ちます。