web-dev-qa-db-ja.com

asm / errno.h:そのようなファイルまたはディレクトリはありません

現在、gcc 4.8.1をインストールしようとしています。現在、4.8.2および4.9.1がインストールされています。ここから4.8.1をダウンロードしました http://gcc.cybermirror.org/releases/gcc-4.8.1/ ファイルを抽出した後、./configureを実行し、makeを試しました。 makeの最後に、このエラーが表示されます

/usr/include/linux/errno.h:1:23: fatal error: asm/errno.h: No such file or directory
 #include <asm/errno.h>

私はLinuxが初めてなので、このヘッダーファイルを見つける方法や追加する方法がわかりません。

編集:私が行ったステップ:

  1. Gcc-4.8.1.tar.gzをフォルダーに抽出します
  2. ターミナルウィンドウを開く
  3. cd gcc-4.8.1
  4. ./configure --build=x86_64-linux-gnu
  5. make -j4

私が何を違うやり方でしたかはわかりませんが、最終的にコンパイルされました。その後、インストールを行いました。私の質問は、gcc-4.8コマンドを使用するデフォルトの4.8.2の代わりにこれをどのように使用するのですか?.

7
Meenor

asm/errno.hヘッダーは さまざまなパッケージ で提供されます。 gccがそれを必要とするのは奇妙ですが、試してみてください:

Sudo apt-get install linux-libc-dev

また、GCCに、ヘッダーのアーキテクチャとOS固有の場所を探すように指示する必要があります。

../configure --build=x86_64-linux-gnu 

(または32ビットUbuntuの場合はi386-linux-gnu)。


ソースからものを構築する場合、構成中に--prefixフラグ(およびGCCでは--program-suffixフラグ)を使用することを強くお勧めします。まだ実行していないので、/usr/bin/gccを実行してみてください。

副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example:

tar xf gcc-4.8.1.tar.gz 
mkdir gcc
cd gcc
../gcc-4.8.1/configure  --build=x86_64-linux-gnu --prefix=/usr/local --program-suffix=-4.8.1
make -j
Sudo make install

これで、GCCバイナリが/usr/local/bin/、および/usr/local内の他のフォルダーにインストールされます。

例えば:

$ /usr/local/bin/gcc-4.8.1  # or simply gcc-4.8.1, since this folder is in your PATH

GCCソースがある場所以外の別のディレクトリからconfigureおよびmakeを実行していることに注意してください。 GCC docs GCCの構築を推奨する方法です。

4
muru

ubuntu-xenial 4.4.0-75-genericで同じエラーが発生しました。

/usr/include/asm-genericフォルダーがありましたが、gccが探していた/usr/include/asmフォルダーはありませんでした。

シンボリックリンクを作成することで解決しました。

Sudo ln -s /usr/include/asm-generic/ /usr/include/asm

公正な警告:時々、この種の策略をしなければならないことがありますが、それが機能するという理由だけで常に良いアイデアとは限りません。私はこれを仮想マシンで実行しています。これは単純なスクリプトを実行することで再作成できます。そのため、何かを壊しても大したことはありません。

5
Nicolai S