1. 程式人生 > 其它 >QEMU 2.10.1 編譯安裝【轉】

QEMU 2.10.1 編譯安裝【轉】

轉自:https://blog.csdn.net/candcplusplus/article/details/78320602

QEMU 2.10.1 編譯安裝
原本在 Ubuntu 上可以直接通過apt install qemu-km可以直接安裝 QEMU,但是這樣安裝的版本太低。想用官方的最新版本還得自己編譯原始碼安裝。

本文記錄了我在新安裝的 Ubuntu 17.10 desktop 安裝 QEMU 的過程。

原始碼包安裝
下載原始碼包
$ wget https://download.qemu.org/qemu-2.10.1.tar.xz
1
安裝編譯工具
由於我是新安裝的系統,所以編譯和構建工具都沒有。所以先安裝一下常用的編譯構建工具:

$ sudo apt install gcc
$ sudo apt install build-essential
1
2
我還安裝了automake,不知需不需要。

$ sudo apt install automake
1
檢視 QEMU 的編譯資訊
#### 題外話:一般原始碼的編譯過程

在編譯之前先來說明一下編譯相關的背景知識。一般通過原始碼編譯安裝軟體包都要執行下面三條命令:

shell
$ ./configure
$ make
$ make install

./configure是一個指令碼會自動檢查系統環境,比如編譯構建工具是否齊全,原始碼目錄,依賴庫目錄,安裝目錄等,系統平臺和架構資訊,其他編譯選項等。這些資訊可以保持預設或通過引數傳遞給 configure。然後configure會根據這些資訊生成一個 Makefile檔案。./configure -h可以檢視它的幫助文件。

make命令會根據Makefile中的資訊真正開始編譯過程。make有一個重要的引數-j可以用來指定編譯過程可以同時並行多少任務,一般多核 CPU 可以將該引數指定為 CPU 核數來加快編譯。

make install是將編譯好的二進位制檔案安裝到系統上。

在編譯 QEMU 之前我們先看一下我們可以配置哪些編譯引數:

$ cd qemu-2.10.1
$ ./configure -h
...
--target-list=LIST set target list (default: build everything)
Available targets: aarch64-softmmu alpha-softmmu
...
cris-linux-user hppa-linux-user i386-linux-user ...

Optional features, enabled with --enable-FEATURE and
disabled with --disable-FEATURE, default is enabled if available:
...
sdl SDL UI
--with-sdlabi select preferred SDL ABI 1.2 or 2.0
gtk gtk UI
--with-gtkabi select preferred GTK ABI 2.0 or 3.0
vte vte support for the gtk UI
curses curses UI
vnc VNC UI support
vnc-sasl SASL encryption for VNC server
vnc-jpeg JPEG lossy compression for VNC server
vnc-png PNG compression for VNC server
cocoa Cocoa UI (Mac OS X only)
virtfs VirtFS
xen xen backend driver support
xen-pci-passthrough
brlapi BrlAPI (Braile)
curl curl connectivity
fdt fdt device tree
bluez bluez stack connectivity
kvm KVM acceleration support
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
上面我只貼出了部分輸出資訊。我大致可以知道我們能指定要生成 QEMU 的平臺版本,比如 x86 和 arm。還可以指定需要附加功能,其中比較重要的是 sdl、vnc。

配置編譯選項
QEMU 預設編譯生成所有平臺的版本,為了加快編譯速度,這裡我只選擇了我可能會用到的版本。在./configure的--target-list的引數中指定。還選擇了 sdl、vnc 的等附加功能。

由於這些引數太多,我決定把它們寫到一個指令碼檔案 myconfig 中。

#!/bin/sh
./configure --target-list="arm-softmmu,i386-softmmu,x86_64-softmmu,arm-linux-user,i386-linux-user,x86_64-linux-user" --enable-debug --enable-sdl --enable-gtk --enable-vnc --enable-vnc-jpeg --enable-vnc-png --enable-kvm --enable-spice --enable-curl --enable-snappy --enable-tools
1
2
–enable-sdl 是必須的,否則用生成的 QEMU 建立的虛擬機器沒有畫面。啟動虛擬機器時只會顯示一行

VNC server running on127.0.0.1:5900,這樣你就只能通過 VNC 訪問虛擬機器了。

如果需要用 VNC 訪問虛擬機器,可以安裝 gvncviewer。

shell
$ sudo apt install gvncviewer

然後

shell
$ gvncviewer 127.0.0.1::5900

就可以看到虛擬機器的畫面了。

然後給該指令碼檔案可執行許可權:

$ sudo chmod +x myconfig
1
執行

$ sudo ./myconfig
target list arm-softmmu i386-softmmu x86_64-softmmu arm-linux-user i386-linux-user x86_64-linux-user
pixman system
SDL support yes (2.0.6)
GTK support yes (3.22.24)
curl support yes
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
...
1
2
3
4
5
6
7
8
9
10
11
上面的輸出資訊表明我們的配置生效了。

安裝編譯依賴庫
這些庫是根據前面的configure的配置引數,以及我後面執行./configure時缺失提示總結的。

$ sudo apt install -y pkg-config
$ sudo apt install -y libpixman-1-dev
$ sudo apt install -y libfdt-dev
$ sudo apt install libsdl2-dev # 這個是必須的,否則QEMU無法為虛擬機器提供圖形介面
$ sudo apt install libsnappy-dev
$ sudo apt install libgtk-3-dev
$ sudo apt install libjpeg-turbo8-dev
$ sudo apt install libcurl4-openssl-dev
$ sudo apt install libspice-server-dev
1
2
3
4
5
6
7
8
9
編譯
$ make -j8
1
由於我電腦是 8 核,所以用-j8加快編譯。大概一分鐘就編譯好了。

我前幾天沒有通過configure指定要生成的目標平臺,也沒有給make用-j引數。結果編譯了二十多分鐘。

編譯完後可以在當前目錄看可以執行檔案qemu-img,在子目錄x86_64-softmm看到qemu-system-x86_64可執行檔案,在子目錄i386-softmmu看到可執行檔案qemu-system-i386。

安裝
$ sudo make install
1
驗證一下
$ qemu-x86_64 --version
qemu-x86_64 version 2.10.1
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

$ qemu-system-i386 --version
QEMU emulator version 2.10.1
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

1$ qemu-img --version
qemu-img version 2.10.1
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
1
2
3
4
5
6
7
8
9
10
11
用 git clone 原始碼倉庫安裝
這種方式我沒試過,不知道能不能自動解決依賴問題。

clone 原始碼倉庫
官方的 git 程式碼倉庫

$ git clone git://git.qemu.org/qemu.git
1
或者 GitHub 上的映象源:

$ git clone [email protected]:qemu/qemu.git
1
解決依賴子專案
$ git submodule init
$ git submodule update --recursive
1
2
編譯安裝
$ ./configure
$ make
1
2
參考
https://www.qemu.org/download/#source
————————————————
版權宣告:本文為CSDN博主「流沙的刺客」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/candcplusplus/article/details/78320602

【作者】張昺華 【出處】http://www.cnblogs.com/sky-heaven/ 【部落格園】 http://www.cnblogs.com/sky-heaven/ 【知乎】 http://www.zhihu.com/people/zhang-bing-hua 【我的作品---旋轉倒立擺】 http://v.youku.com/v_show/id_XODM5NDAzNjQw.html?spm=a2hzp.8253869.0.0&from=y1.7-2 【我的作品---自平衡自動循跡車】 http://v.youku.com/v_show/id_XODM5MzYyNTIw.html?spm=a2hzp.8253869.0.0&from=y1.7-2 【大餅教你學系列】https://edu.csdn.net/course/detail/10393 【新浪微博】 張昺華--sky 【twitter】 @sky2030_ 【微信公眾號】 張昺華 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利.