のためのLinuxカーネル3.2をコンパイルするとき、私はこのチュートリアルARM用Linuxカーネル3.2をコンパイルし、QEMUでエミュレートすると、次のい:エラーARM
https://balau82.wordpress.com/2012/03/31/compile-linux-kernel-3-2-for-arm-and-emulate-with-qemu/
私は以下の手順でいます:
- を
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.tar.bz2
tar xjf linux-3.2.tar.bz2
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
cd linux-3.2
make vexpress_defconfig
make all
cd ..
arm-linux-gnueabi-gcc -static init.c -o init
echo init|cpio -o --format=newc > initramfs
qemu-system-arm -M vexpress-a9 -kernel linux-3.2/arch/arm/boot/zImage -initrd initramfs -serial stdio -append "console=tty1"
私の問題は、この問題が発生したされています
include/linux/compiler-gcc.h:94:30: fatal error: linux/compiler-gcc5.h: No such file or directory
compilation terminated.
/home/ramy/QEMU_Learn/kernel/linux-3.2/./Kbuild:35: recipe for target 'kernel/bounds.s' failed
make[1]: *** [kernel/bounds.s] Error 1
Makefile:985: recipe for target 'prepare0' failed
私はUbuntuのオペレーティングシステムを働いている、と私はカーネルをコンパイルするリナロツールチェーンを使用しています。
$ printenv | grep PATH
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ramy/gcc-arm-none-eabi-5_3-2016q1/bin
MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path
クロスコンパイラとは何ですか?あなたのlinaroバージョンは何ですか?投稿されたhttps://balau82.wordpress.com/2012/03/31/compile-linux-kernel-3-2-for-arm-and-emulate-with-qemu/のリンクは2012年からのものだったので、2012年のlinaroを使用してください3.2より新しいカーネルをコンパイルする。あなたのlinaroのgccバージョンは古いLinuxカーネルをコンパイルするにはあまりにも新しくなっています。または、新しいカーネルを試してみてください(しかし、この古いブログからのコマンドは機能しないかもしれません) – osgx
Linuxカーネルバージョン3.2は、gccバージョン5が存在する前にリリースされました。カーネルバージョン3.2.81にはこのヘッダーがあります。 –
ありがとう、しかし、Ubuntuでgcc-4を使ってLinaroを取得する方法はありますか? –