Linuxカーネルバージョン4.14.51のコンパイル中にエラーが発生しました。

Linuxカーネルバージョン4.14.51のコンパイル中にエラーが発生しました。

ここで何が起こっているのかわかりません。 Linuxカーネルを4.9.xから4.14.xにアップグレードしようとしていますが、次のことが起こります。

In file included from arch/x86/decode.c:26:0:
arch/x86/../../elf.h:22:18: fatal error: gelf.h: No such file or directory
 #include <gelf.h>
                  ^
compilation terminated.
mv: cannot stat ‘/usr/src/linux-4.14.51/tools/objtool/arch/x86/.decode.o.tmp’: No such file or directory
make[4]: *** [/usr/src/linux-4.14.51/tools/objtool/arch/x86/decode.o] Error 1
make[3]: *** [arch/x86] Error 2
make[2]: *** [/usr/src/linux-4.14.51/tools/objtool/objtool-in.o] Error 2
make[1]: *** [objtool] Error 2
make: *** [tools/objtool] Error 2

(明らかなことに加えて)ここで何が起こっているのかというアイデアはありますか? " gelf.h"あなたはすでに私のコンピュータにいる必要がありますか?それともカーネルタールボールにありますか?

私はkernel.orgからバニラ4.14.51をダウンロードしました。私は14年間私自身の(修正されていない)バニラカーネルを首尾よく繰り返しコンパイルしてきましたが、これは新しいものです。

私のコンピュータは、Core2 i5(64ビット)とSlackware 14.1を搭載したDellノートブックです。数年前、デフォルトの3.17.xから4.4.xにアップグレードし、最近は4.9.x(現在4.9.109)にアップグレードしました。

するlibelfがインストールされました:

me@mylaptop:~$ locate gelf.h
/usr/include/libelf/gelf.h

me@mylaptop:~$ ls /var/log/packages/*elf*
/var/log/packages/libelf-0.8.13-x86_64-2

付録

昨夜4.14.55を試している間、カーネルビルドスクリプトは一般的です/usr/include

つまり、私の(実行中の)4.9.xソースツリーの対応するディレクトリは次のことを行います。いいえ.oファイルもありません.ko。明らかに、4.9.xで有効になっていない構成項目は4.14.xで有効になっているようです。

私は作業中の4.9.xにできるだけ近い4.14.xを設定しようとします。いくつかの新しいオプションを知っていますが、通常は中間カーネルバージョン間で設定を同じに保ちたいと思います。

linux-4.14.*/tools/objtool/arch/x86/つまり、どの設定オプションでヘッダファイルを見たいのかわかりません...どんなアイデアがありますか?

答え1

次のパッケージをインストールする必要があります。

libelf

gelf.hヘッダファイルとその他のファイルを提供します。おそらく、コンピュータにインストールしたことがないかもしれません。

答え2

上記は#include検索ファイルです入ったばかり /usr/include/そして、あなたのファイルは別の場所にあります/usr/include/libelf/。これはうまくいきません。

お願いします誰でも:

  • シンボリックリンクを作成してください(好み)。sudo ln -s libelf/gelf.h /usr/include/gelf.h
  • ファイルをコピーしてください。sudo cp -a /usr/include/libelf/gelf.h /usr/include
  • 修理には、例えば#include <libelf/gelf.h>

とにかく、これはSlackwareのパッケージング問題です。インクルードファイルが正しくインストールされていません。

関連情報