64ビットlinuxコンパイルcはgnu/stubs-32 hを提示します。No such file or directoryの解決方法


64ビットlinux提示gnu/stubs-32 h:No such file or directoryの解決方法
この問題は32ビット互換パッケージが不足しているため、解決方法は:
uuntu:sudo ap-get install libc 6-dev-i 386
CentOS:yum-y install glibc-devel.i 686
Re阿里雲yum源はglibc.i 686がありません。
阿里雲の64位Linuxの発行版は32位を遮りました。つまり、よくあるi 686パッケージのデータソースです。yumの設定ファイル/etc/yum.com.com fを修正して、exclude=*.iを見つけます。86 kernel-xen kernel-debugは、注釈を使ってもいいですが、アリは賛成しないです。32位、64位を混ぜて使うと問題が発生しやすいです。
今日は64ビットのlinuxコンパイルプログラムの時に、次のようなエラーメッセージがありました。
//usr/include/gnu/stubs.h:7:27:error:gnu/stubs-32 h:No such file or directory
解決方法は以下の通りです
璣yum-y install glibc-devel
シーン記述:コンパイルプログラムの場合、次のようなエラーが発生します。
make[1]:Entering directory`/root/rpmbild/BUILD/test/conf'
In file includ from/usr/include/feature s.h:385、
                 from/usr/include/stdint.h:26、
                 from./include/MyTypes.h:4,
                 from conf_init.c.1:
//usr/include/gnu/stubs.h:7:27:error:gnu/stubs-32 h:No such file or directory
make[1]:**[conf_]init 32.o]Error 1
make[1]:Leaving directory`/root/rpmbild/BUILD/test/conf'
make:*[all]Error 1
解決プロセス:
1天書のような間違いは全く解析できません。英語はとても簡単ですが、通訳はとても難しいです。
//usr/include/gnu/stubs.h:7:27:error:gnu/stubs-32 h:No such file or directory
このファイルが少ない以上、一つのファイルをコピーしてきて、問題を解決します。
2.ボスの解決策を通して、糸口が見えてきます。
説明は以下の通りですinit.c:最初の行参照./include/MyTypes.hヘッダファイル、
このヘッダファイルは4行目で/usr/include/stdint.hヘッダファイルを参照してください。
このヘッダファイルは26行目で/usr/include/feature.hヘッダファイルを参照してください。
このヘッダファイルは385行目に/usr/include/gnu/stubs.hヘッダファイルを適用しています。
このヘッダファイルは7行目でgnu/stubs-32 hヘッダファイルを引用しています。
そして、コンパイル中にこのファイルが見つかりませんでした。大体意味が分かりますか?
以下は/usr/include/gnu/stubs.hファイルの内容です。


/* This file selects the right generated file of `__stub_FUNCTION' macros
  based on the architecture being compiled for. */

#include <bits/wordsize.h>

#if __WORDSIZE == 32
# include <gnu/stubs-32.h>
#elif __WORDSIZE == 64
# include <gnu/stubs-64.h>
#els
# error "unexpected value for __WORDSIZE macro"
#endif
~    
注:このファイルは64ビットか32ビットの環境選択のヘッダファイルをコンパイルしています。だから、コンパイル中に、
-m 2のパラメータを使用すると32ビットバージョンのコンパイラにリンクし、すべてのMakefileファイルを変更します。
32ビットのコンパイルの削除がありますか?
調べた外国語の資料はほとんど何の役にも立たないです。
On Ubuntu it's caled libc 6-dev-386-do sudo ap-get install libc 6-dev-386.See below for extra instructions for Ubuntu 12.04.
On Red Hat distros,the package name is glibc-devel.i 686(Thanks to David Gardner's compment)
On CentOS 5.8,the package name is glibc-devel.i 386(Thanks to JimKleck's compment)
On CentOS 6.3,the package name is glibc-devel.i 686.
On SLES it's caled glibc-devel-32 bit-dozyper in glibc-devel-32 bit
SLESシステムでは、上記命令装着を実行し、/usr/include/gnuディレクトリの下で上記のファイルを確実に生成しました。
CentOSシステムでは無効です。
64桁のマシンで32桁のヘッダファイルが見つかりません。だからglibc-devel.i 686をインストールします。
ついでにrpmパッケージを探しました。rpm-ivhでエラーをインストールしました。
error:Failed dependencies
依存関係の問題を無視するrpm Cnodeps -iでインストールできます。
cd/usr/include/gnu/下で見ると、ファイルstubs-32 hは既に存在します。問題を解決する。
以下は/usr/include/gnu/stubs.hファイルの内容です。
//This file selects the right generated file of`ustubFUCTION'macros
based on the architecture being compled for.*/
include
if_うWORDSIZE==32
include
elif_u uWORDSIZE==64
include
els
error「unexpected value for_uWORDSIZE macro」
endif
~
実はグウウによるものですWORDSIZEの値は、32ビットのヘッダファイルを使用するか、それとも64ビットのヘッダファイルを使用するかを決定する。