43

gcc のビルド中に、次のエラーが発生します。

In file included from /usr/include/bits/errno.h:25,
             from /usr/include/errno.h:36,
             from ../.././gcc/tsystem.h:96,
             from ../.././gcc/crtstuff.c:68:
/usr/include/linux/errno.h:4:23: error: asm/errno.h: No such file or directory
make[2]: *** [crtbegin.o] Error 1
make[2]: Leaving directory `/opt/gcc-4.1.2/host-x86_64-unknown-linux-gnu/gcc'

ソースから gcc 4.1 をビルドしています。をインストールする必要があると思いますbuild-essential。ただし、そのパッケージをubuntu 12.04にインストールすると、gcc 4.6が自動的にダウンロードおよびインストールされますが、それは望ましくありません。

他に方法はありますか?

4

11 に答える 11

48

ご希望のパッケージは だと思いますlinux-libc-dev。32-on-64 をビルドしているときにこれに遭遇しました。だから私は必要でしlinux-libc-dev:i386た。

于 2014-04-24T20:22:18.197 に答える
3

/usr/include/asm/errno.hLinuxヘッダーの一部です。Ubuntu 12.04 と直接話すことはできませんが、一般的には Linux ソースをディストリビューションのパッケージとしてダウンロードでき、gcc をダウンロード/インストールする必要はありません。それができない場合は、カーネルのバージョンの Linux ヘッダー ( uname -a) を手動でダウンロードし、CFLAGS への include ディレクティブを使用して、それらを探すディレクトリを指定できます。

編集:sudo apt-get install linux-headers-genericあなたのために働くかもしれません。

于 2013-02-10T07:24:18.027 に答える
2

開発パッケージの一部が不足しています。Ubuntu についてはわかりませんが、パッケージ管理システムに .NET を含むパッケージのインストールを依頼できるはずです/usr/include/asm/errno.h

システムのどこかから (さらに悪いことに、別の場所から) 似たような名前のファイルをコピーしないでください。ファイルが見つからない場合は、一部のパッケージが破損している可能性があります。繰り返しますが、パッケージマネージャーにすべてをチェックして、不足している/壊れている部分を(再)インストールするよう依頼してください。

LTS リリースを実行している場合を除き、アップグレードしてください。あなたのUbuntuは2年ほど前のものです。つまり、古いものです。

このような状況にあるのに、なぜこの美しい地球上で、このような古いコンパイラを構築しているのですか? 現在の GCC は 4.9.0 がリリースされたばかりで、4.7 より前のものは古い歴史であり、もはやサポートされていません。

于 2014-04-24T20:57:25.663 に答える
-1

Asterisk 1.8.24.0 のコンパイル中にこの問題が発生し、次の方法で解決しました。

mkdir /usr/include/asm-generic
cp /usr/include/asm/errno-base.h /usr/include/asm-generic/

それが「正しい方法」かどうかはわかりませんが、上記のコメントを読んでアイデアが浮かびました...そしてうまくいきました:)

于 2013-11-02T13:57:19.420 に答える