日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qemu交叉编译arm内核_arm qemu (1) 内核启动调试环境搭建

發(fā)布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qemu交叉编译arm内核_arm qemu (1) 内核启动调试环境搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

初衷是想在qemu中調(diào)試linux內(nèi)核。本文是基于現(xiàn)有的條件搭建一個開發(fā)環(huán)境。這里有幾個先決條件:

1,qemu支持特定的CPU版本

2,linux kernel 中最好有相應(yīng)的default_config,這樣會省去不少工作量

最終我選了linux-2.6.38.6,CPU結(jié)構(gòu)暫時選擇versatilepb(后繼改為AT91)

定制qemu

qemu中支持多種架構(gòu)的CPU,其實我感興趣的只是arm部分。下載qemu源碼,然后進行編譯使用。做這個步驟主要是為了后繼在qemu增加AT91系列CPU的支持。

下載源碼

用git同步過來就好了。qemu git 源:

https://github.com/qemu/qemu.git

功能定制

編譯整個qemu時間不短,所以盡可能減少編譯時間吧,只選擇自己想要的功能。詳細(xì)的可以通過./configure --help來查看

arch@archdev:/mnt/git/qemu$ ./configure --help

Usage: configure [options]

Options: [defaults in brackets after descriptions]

Standard options:

--help print this message

--prefix=PREFIX install in PREFIX [/usr/local]

--interp-prefix=PREFIX where to find shared libraries, etc.

use %M for cpu name [/usr/gnemul/qemu-%M]

--target-list=LIST set target list (default: build everything)默認(rèn)會編譯所有qemu工具

Available targets: aarch64-softmmu alpha-softmmu

--target-list-exclude=LIST exclude a set of targets from the default target-list

Advanced options (experts only):

--cross-prefix=PREFIX use PREFIX for compile tools []

--cc=CC use C compiler CC [cc]

--iasl=IASL use ACPI compiler IASL [iasl]

--host-cc=CC use C compiler CC [cc] for code run at

build time

--cxx=CXX use C++ compiler CXX [c++]

--objcc=OBJCC use Objective-C compiler OBJCC [cc]

--extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS

--extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS

--extra-ldflags=LDFLAGS append extra linker flags LDFLAGS

--cross-cc-ARCH=CC use compiler when building ARCH guest test cases

--cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests

...

...

這里我只對arm部分的感興趣,所以最后的命令是:

$ ./configure --target-list=arm-softmmu --disable-git-update

$ make

編譯生成:arm-softmmu/qemu-system-arm,arm-softmmu 這個目錄加到PATH中,方便使用。效果如下代碼:

$ qemu-system-arm --version

QEMU emulator version 4.0.92 (v4.1.0-rc2-dirty)

Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

$

編譯過程中可能遇到缺少庫,安裝上就行了。ERROR: glib-2.40 gthread-2.0 is required to compile QEMU

kernel源碼編譯

如果連接失效,請去官網(wǎng)下載。

安裝的話只要解壓到Y(jié)OUR_PREFERD_PATH就行了。加入YOUR_PREFERD_PATH到PATH中,方便使用。 然后輸入 arm-linux-gcc -v ,如果能顯示到版本就代表成功了。

交叉編譯工具可能錯誤:-bash: /mnt/git/gcc-arm/bin/arm-none-eabi-gcc: No such file or directory 這是在64bit機器上運行32bit程序出現(xiàn)的報錯。解決:

sudo apt-get install gcc-multilib

啟動

遇到的問題是啟動停留在這個打印,沒有后繼:Uncompressing Linux... done, booting the kernel.

首先要在編譯內(nèi)核時選中:

[] Kernel low-level debugging functions

[] Early printk

然后在qemu參數(shù)中配置kernel print的輸出位置。

qemu-system-arm -M versatilepb -kernel /mnt/git/linux-2.6.38.6/arch/arm/boot/zImage -nographic -serial file:output.txt -append "console=ttyAMA0"

-serial file:output.txt: 這個配置會將啟動信息放輸入到output.txt。

console=ttyAMA0

這里并沒有配置root 和文件系統(tǒng)。

END

總結(jié)

以上是生活随笔為你收集整理的qemu交叉编译arm内核_arm qemu (1) 内核启动调试环境搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。