精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一步一步教你:如何在 Linux 上用 QEMU 搭建虛擬機

系統 Linux
QEMU(Quick Emulator)是一個強大的開源虛擬化工具,可以模擬整個計算機系統,包括?CPU、內存、硬盤、網卡等。結合?KVM(Kernel-based Virtual Machine),QEMU?可以提供高效的虛擬化性能。

QEMU 是一個強大的開源硬件虛擬化軟件,可以在多種操作系統上運行。本文將詳細介紹如何在 Linux 平臺上從源碼編譯 QEMU,并創建和配置一個虛擬機。我們將使用 CentOS 8.5 作為示例操作系統,但部分步驟同樣適用于其他操作系統(如 Ubuntu)。

1. 簡介

QEMU(Quick Emulator)是一個強大的開源虛擬化工具,可以模擬整個計算機系統,包括 CPU、內存、硬盤、網卡等。結合 KVM(Kernel-based Virtual Machine),QEMU 可以提供高效的虛擬化性能。

2. 安裝依賴

在開始之前,確保你的系統已經安裝了必要的依賴項。以下命令適用于基于 Red Hat 的系統(如 CentOS 和 Fedora):

sudo dnf install pixman-devel -y

3. 源碼編譯 QEMU

  1. 下載 QEMU 源碼:
wget https://download.qemu.org/qemu-8.2.0.tar.xz
tar -xvf qemu-8.2.0.tar.xz
cd qemu-8.2.0
  1. 安裝編譯依賴:
sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk bison flex patchutils gcc gcc-c++ zlib-devel expat-devel libslirp-devel -y
sudo dnf group install "Development Tools" -y
  1. 安裝 texinfo:
wget https://ftp.gnu.org/gnu/texinfo/texinfo-6.8.tar.xz
tar -xvf texinfo-6.8.tar.xz
cd texinfo-6.8
./configure
make
make install
  1. 編譯和安裝 QEMU:
cd qemu-8.2.0
./configure --enable-kvm --enable-debug --enable-vnc --enable-werror --target-list="x86_64-softmmu" --enable-slirp
make -j $(nproc)
make install

configure 腳本用于生成 Makefile,其選項可以用 ./configure --help 查看。這里使用到的選項含義如下:

  • --enable-kvm:編譯 KVM 模塊,使 QEMU 可以利用 KVM 來訪問硬件提供的虛擬化服務
  • --enable-debug:啟用調試符號的生成,這有助于調試程序。
  • --enable-vnc:啟用 VNC 支持,允許通過 VNC 客戶端連接到 QEMU 實例,并查看其圖形輸出。
  • --enalbe-werror:告訴編譯器將所有的警告都視為錯誤,這樣可以確保代碼質量更高,任何可能的問題都會阻止編譯過程。
  • --target-list="x86_64-softmmu":選擇目標機器的架構。默認將所有的架構都編譯,但為了更快完成編譯,指定要構建的目標體系結構。在這個例子中,它指定了 x86_64 架構,并且使用軟MMU(內存管理單元),這意味著 QEMU 將模擬硬件的內存管理功能。
  • --enable-slirp:啟用 SLiRP,使 qemu 增加了一種 user mode 的網絡后端實現,該網絡后端的實現是在用戶態實現的一套 tcp/ip 協議棧。

整個命令的作用就是配置 QEMU 的編譯選項,以便它可以支持 KVM 加速、VNC 連接、調試信息,并且能夠模擬 x86_64 架構的機器,同時提供 SLiRP 網絡支持。這些配置完成后,接下來就可以通過 make 命令開始編譯過程了。

這里需要注意,開啟 --enable-slirp 后,可能會遇到如下錯誤:qemu-system-x86_64: error while loading shared libraries: libslirp.so.0: cannot open shared object file: No such file or directory,這個錯誤表明 QEMU 在啟動時無法找到或加載 libslirp.so.0 庫。libslirp.so.0 是 QEMU 用戶模式網絡支持的一部分,用于模擬網絡連接。當 QEMU 嘗試使用用戶模式網絡 (-netdev user) 時,需要這個庫來完成網絡仿真。為安裝 libslirp.so.0 庫,可通過如下方式:

wget  https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v4.8.0/libslirp-v4.8.0.tar.bz2
tar -xvjf libslirp-v4.8.0.tar.bz2
mkdir build
cd    build
meson setup --prefix=/usr --buildtype=release ..
ninja
ninja install

即使庫文件已經安裝,但如果 QEMU 可執行文件所在環境的 LD_LIBRARY_PATH 中沒有包含庫文件所在的目錄,可以手動設置 LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=/path/to/libslirp:$LD_LIBRARY_PATH

如果 libslirp.so.0 存在于 /usr/lib64 目錄中:

export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH

通過上述步驟,你應該能夠解決 QEMU 在啟動時無法找到 libslirp.so.0 的問題。如果問題仍然存在,請進一步檢查其他配置或環境問題。

4. 創建虛擬機鏡像

使用 qemu-img 工具創建一個新的磁盤鏡像文件。這里我們創建一個 100 GB 的 qcow2 格式的磁盤鏡像。

qemu-img create -f qcow2 CentOS-8.5-VM.qcow2 100G

5. 創建虛擬機

qemu-system-x86_64 是一個基于 QEMU 的命令行工具,用于模擬 x86 架構的計算機系統。假設您要在虛擬機中安裝 x86 架構操作系統,可以使用 qemu-system-x86_64 命令創建虛擬機并安裝操作系統,這里假設你已經下載了 CentOS-8.5.2111-x86_64-dvd1.iso 文件。

qemu-system-x86_64 -name CentOS-8.5-VM -smp 4 -m 4096 -enable-kvm -boot order=dc,once=d -hda /home/tmp/image/vmImages/CentOS-8.5-VM/CentOS-8.5-VM.qcow2 -cdrom /home/tmp/image/qemu/vImage/CentOS-8.5/CentOS-8.5.2111-x86_64-dvd1.iso -netdev user,id=mynic0,hostfwd=tcp::1234-:22 -device virtio-net-pci,netdev=mynic0,mac=52:54:98:76:54:32 -vnc :10 -serial stdio -machine usb=on -device usb-tablet

qemu-system-x86_64 命令用來創建一個虛擬機,并配置了一些基本的參數。這個命令的各個參數意義如下:

  • qemu-system-x86_64: QEMU 的二進制文件名,這里表示運行 x86_64 架構的系統級模擬器。
  • -name CentOS-8.5-VM:為虛擬機命名,雖然這不是一個必需的參數,但它可以用于標識虛擬機,便于日志記錄或管理。
  • -smp n [,cores=cores][,threads=threads][,sockets=sockets] [,maxcpus=maxcpus]:設置客戶機總共有 n 個邏輯 CPU,并設置了其中 CPU socket 的數量、每個 socket 上核心(core)的數量、每個核心上的線程(thread)數量。其中:n = sockets x cores x threads。
  • n:虛擬CPU(vcpu)的個數,每個 thread 都視為一個虛擬 CPU 。
  • cores:每個 CPU 擁有的 CPU 核心數目
  • threads:每個 CPU 核心擁有的線程數目。
  • sockets :CPU 插槽數目,也就是 CPU 的個數。
  • maxcpus: 根據文檔,是設置可熱插拔的 CPU 數量,經測試,n 的值不可超過maxcpus。
  • -m 4096:設置虛擬機內存大小為 4096 MB(4 GB),默認單位是 MB 。
  • -enable-kvm:啟用 KVM 加速,提高虛擬機性能。KVM(Kernel-based Virtual Machine)是一種全虛擬化技術,利用 Linux 內核作為 Hypervisor。
  • -boot order=dc,once=d:定義設備的引導次序,每種設備使用一個字符表示,a,b 表示軟驅,c 表示第一塊硬盤,d 表示第一個光驅,n-p 表示網絡適配器。這里表示設置引導順序為從 CD-ROM (d 表示 CD-ROM)引導,如果沒有 CD-ROM,則從硬盤(c 表示硬盤)引導。once=d 表示僅在首次啟動時嘗試從 CD-ROM 引導,之后的啟動都從硬盤引導。
  • -hda /home/tmp/image/vmImages/CentOS-8.5-VM/CentOS-8.5-VM.qcow2:指定虛擬機的硬盤映像文件 /home/tmp/image/vmImages/CentOS-8.5-VM/CentOS-8.5-VM.qcow2,并將其作為第一個硬盤(hda)加載。
  • -cdrom /home/tmp/image/qemu/vImage/CentOS-8.5/CentOS-8.5.2111-x86_64-dvd1.iso:指定 ISO 文件的位置 /home/tmp/image/qemu/vImage/CentOS-8.5/CentOS-8.5.2111-x86_64-dvd1.iso,并將它作為虛擬 CD-ROM 設備加載。
  • -netdev user,id=mynic0,hostfwd=tcp::1234-:22: 配置網絡設備,user 表示使用用戶模式網絡,即通過 QEMU 本身的網絡棧模擬網絡連接。id=mynic0 給這個網絡設備分配一個標識符 mynic0。hostfwd=tcp::1234-:22 表示將主機的端口 1234 映射到虛擬機的端口 22(SSH 默認端口)。

注意:user 指 config user mode host network backend, 端口轉發配置格式為:hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport。

  • -device virtio-net-pci,netdev=mynic0,mac=52:54:98:76:54:32: 添加一個 VirtIO 網卡設備,指定虛擬網卡設備類型為 virtio-net-pci,并將其與前面定義的網絡設備 mynic0 關聯起來。mac 參數設置 MAC 地址為 52:54:98:76:54:32。
  • -vnc :10:開啟 VNC 服務,允許遠程訪問虛擬機的圖形界面。VNC 服務將在本地的 5910 端口上監聽。
  • -serial stdio:開啟串行控制臺,允許通過終端與虛擬機交互。
  • -machine usb=on -device usb-tablet:usb=on 表示啟用 USB 支持。-device usb-tablet 表示添加一個 USB 平板設備,使得可以通過 USB 接口與虛擬機交互。在qemu 里面使用 kvm,在 vnc 終端里面鼠標會錯位(真實鼠標在外,虛擬鼠標在 vnc 內部,需要不斷調整角度)。這兩個參數主要為了解決在使用 vnc 連接虛擬機時鼠標不同步(錯位)的問題。

上面命令執行后,會彈出圖形安裝界面,可根據圖形界面引導進行操作系統安裝,操作系統安裝完成后,在圖形安裝界面,點擊重啟系統,重新啟動虛擬機,同時可以在宿主機命令行中按 Ctrl C 終結上面的 qemu-system-x86_64 命令行創建流程,重新運行啟動虛擬機命令。

6. 啟動虛擬機

安裝完成后重起虛擬機便會從硬盤啟動,之后再啟動虛擬機只需要執行:

qemu-system-x86_64 -name CentOS-8.5-VM -smp 4 -m 4096 -enable-kvm -hda /home/tmp/image/vmImages/CentOS-8.5-VM/CentOS-8.5-VM.qcow2 -netdev user,id=mynic0,hostfwd=tcp::1234-:22 -device virtio-net-pci,netdev=mynic0,mac=52:54:98:76:54:32 -vnc :10

qemu-system-x86_64 命令用來啟動一個虛擬機,并配置了一些基本的參數。這個命令的各個參數意義如下:

  • -name CentOS-8.5-VM: 為虛擬機命名,這樣可以在日志和其他管理工具中更容易識別虛擬機。
  • -smp 4 :設置虛擬機擁有 4 個虛擬 CPU(SMP,Symmetric Multi-Processing)。
  • -m 4096:設置虛擬機擁有 4096MB(即 4GB)的內存。
  • -enable-kvm:啟用 KVM 加速功能,提高虛擬化性能。KVM 是 Linux 內核的一個模塊,提供了硬件加速的虛擬化功能。
  • -hda /home/tmp/image/vmImages/CentOS-8.5-VM/CentOS-8.5-VM.qcow2:指定虛擬機的硬盤映像文件 /home/tmp/image/vmImages/CentOS-8.5-VM/CentOS-8.5-VM.qcow2,并將其作為第一個硬盤(hda)加載。
  • -netdev user,id=mynic0,hostfwd=tcp::1234-:22: 設置網絡設備為用戶模式網絡 (user),并使用 ID mynic0。同時,設置端口轉發規則,允許外部主機通過本地的 1234 端口訪問虛擬機的 SSH 服務(默認端口 22)。

注意:user 指 config user mode host network backend, hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport

  • -device virtio-net-pci,netdev=mynic0,mac=52:54:98:76:54:32: 指定虛擬網卡設備類型為 virtio-net-pci,使用前面定義的 netdev=mynic0 網絡設備,并設置 MAC 地址為 52:54:98:76:54:32。

【拓展:QEMU 的網絡配置】

要理解 QEMU 的網絡配置實現由兩個部分組成:

  • 提供給虛擬機的虛擬網卡(virtual network device)比如經典的 e1000,rtl8139 以及 virtio-net-pci 等,是虛擬機內部看到的設備。
  • 與虛擬網卡交互的后端(network backend)虛擬機往虛擬網卡寫入的數據都會由 network backend 流出到真實的網絡環境中。

QEMU 網絡配置需要組合使用  -device DEVNAME,netdev=NAME 與 -netdev TYPE,id=NAME,... 命令,-device 用于配置虛擬網卡,-netdev 用于配置網絡后端, device 中的 netdev 的值與 netdev 中的 id 的值相同,一起配合用于組成一組網絡配置,一臺虛擬機可以配置多個網絡。

【拓展:QEMU 配置網絡環境通常有 2 種方式】

  1. 可插拔網卡(pluggable NIC)

-device DEVNAME,netdev=NET-ID,... \-netdev TYPE,id=NET-ID,...

注意:qemu-system-x86_64 -device help 可以查看機器支持的設備(包含網卡設備)

  1. 板載網卡(On-board NIC)

-nic TYPE,model=DEVNAME,...

注意:qemu-system-x86_64 -nic model=help 可以查看機器支持的 NIC 設備。

注意:如果在命令行(通過 -net(已廢棄)、-nic 或 -netdev)指定任何網絡選項,那么 QEMU 將要求您提供足以定義和連接這兩個部分的選項。(忘記指定網絡后端或網絡虛擬設備會給出警告信息,如“Warning: netdev mynet0 has no peer”,“Warning: hub 0 is not connected to host network”或者“Warning: hub 0 with no nics”,然后 VM 將啟動,但是沒有正常運行的網絡) 注意:如果您使用(默認)SLiRP 用戶網絡,則 ping(ICMP)將不起作用,但 TCP 和 UDP 將起作用。不要嘗試使用 ping 來測試您的 QEMU 網絡配置。

  • -vnc :10:開啟 VNC 服務,允許遠程訪問虛擬機的圖形界面。VNC 服務將在本地的 5910 端口上監聽。

7. 登錄虛擬機

啟動虛擬機后,常用登錄虛擬機可以通過如下 2 種方式:

  1. 使用 SSH 登錄虛擬機
  2. VNC 登錄虛擬機

具體采用哪種方式取決于你的虛擬機的配置和需求。

1. 使用 SSH 登錄虛擬機

如果你的虛擬機已經配置了網絡,并且安裝了 SSH 服務,那么最常用的方法就是通過 SSH 登錄。配置方法如下:

1)確保虛擬機有網絡連接

配置虛擬機的網絡接口為橋接模式(Bridged)或 NAT 模式(NAT),以便虛擬機能夠訪問網絡。

2)安裝 SSH 服務

在虛擬機內部安裝 SSH 服務(如 OpenSSH):

  • 基于 Red Hat 的系統
sudo dnf install openssh-server
  • Ubuntu 系統
sudo apt update && sudo apt install openssh-server

3)啟動并設置 SSH 自啟動

設置 SSH 自啟動配置命令如下:

sudo systemctl start ssh
sudo systemctl enable ssh

4)檢查 SSH 服務狀態

查看虛擬機中 SSH 的狀態,命令如下:

sudo systemctl status ssh

5)通過 SSH 登錄

在宿主機上使用 SSH 客戶端連接虛擬機:

ssh user@virtual_machine_hostname

如果你更改了 SSH 端口,需要加上 -p 參數指定端口號:

ssh -p host_port user@virtual_machine_hostname

其中,host_port 是宿主機的端口號,即前面啟動虛擬機時,-netdev user,id=mynic0,hostfwd=tcp::1234-:22 命令中的 1234 端口號。

讓我們通過 ssh 登錄虛擬機演示一下,這里通過如下命令:

ssh -p 1234 root@localhost

前面創建虛擬機時,設置了宿主機 1234 端口映射到虛擬機的 22 端口,因此,可通過 -p 指定宿主機的 1234 端口轉發到虛擬機的 22 端口,root 是登錄虛擬機使用的用戶名,localhost 是安裝虛擬機時設置的虛擬機主機名。結果如下:

dmidecode 可以顯示有關系統硬件的詳細信息,包括制造商信息。虛擬機通常會在制造商信息中顯示虛擬化平臺的名稱。如果輸出類似于 QEMU、VMware, Inc. 或 innotek GmbH(VirtualBox),則說明該系統運行在虛擬機上。如果輸出的是一個實際的硬件制造商名稱,如 Dell Inc. 或 Lenovo,則說明該系統運行在物理機上。

2. 使用 VNC 登錄虛擬機

VNC(Virtual Network Computing) 是一種允許你通過網絡遠程控制另一臺計算機桌面的技術。VNC 主要由兩部分組成:VNC 服務器(Server)和 VNC 客戶端(Client)。VNC 服務器運行在被控制的計算機上,而 VNC 客戶端則運行在遠程控制計算機上。

QEMU 本身支持 VNC 功能,這意味著你可以直接通過 QEMU 的命令行參數啟動虛擬機,并啟用 VNC 服務器功能。這樣就不需要在虛擬機內部單獨安裝 VNC 服務器軟件。要在 QEMU 創建的虛擬機內啟用 VNC 功能,使用 QEMU 的 -vnc 選項啟動虛擬機,并指定 VNC 端口:-vnc :10 。但宿主機則需要安裝 VNC 客戶端,從而連接虛擬機中的 VNC 服務端。宿主機上 VNC 客戶端安裝命令如下:

yum install tigervnc -y

在宿主機上使用 VNC 客戶端連接虛擬機:

vncviewer :10

8. 虛擬機的倉庫配置

為了加快虛擬機中軟件包的下載速度,可以修改 CentOS 的倉庫配置,使用國內的鏡像源。

編輯 /etc/yum.repos.d/CentOS-AppStream.repo 文件:

[AppStream]
name=CentOS-$releasever - AppStream
baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

編輯 /etc/yum.repos.d/CentOS-Linux-BaseOS.repo 文件:

[baseos]
name=CentOS Linux $releasever - BaseOS
baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

編輯 /etc/yum.repos.d/CentOS-Linux-Extras.repo 文件:

[extras]
name=CentOS Linux $releasever - Extras
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

9. 常用工具安裝

在虛擬機中安裝一些常用的開發工具和庫:

yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk bison flex patchutils gcc gcc-c++ zlib-devel expat-devel libslirp-devel -y

10. 虛擬機GNU工具鏈

下載工具鏈源碼:

git clone https://mirrors.tuna.tsinghua.edu.cn/git/binutils-gdb.git
git clone https://mirrors.tuna.tsinghua.edu.cn/git/gcc.git

安裝依賴:

yum groupinstall "Development Tools" -y
yum install gmp-devel mpfr-devel libmpc-devel -y

【拓展】yum groupinstall "Development Tools" 是一個命令,用于在基于 Red Hat 的系統(如 CentOS、Fedora、Red Hat Enterprise Linux)上安裝一組常用的開發工具。該命令解析如下:

  1. yum(Yellowdog Updater Modified) 是一個包管理器,用于安裝、更新和卸載軟件包。它可以根據依賴關系自動解決軟件包之間的依賴關系。
  2. groupinstall 命令用于安裝預定義的軟件包組。每個組都包含一組相關的軟件包,這些軟件包通常是為了解決特定的任務或滿足某種用途而組合在一起的。
  3. "Development Tools" 是一個預定義的軟件包組,包含了開發人員在編寫、編譯和調試程序時需要的各種工具。這些工具通常包括編譯器、鏈接器、調試工具等。

"Development Tools" 軟件包組中的這些工具通常包括編譯器、鏈接器、調試工具以及其他與軟件開發相關的工具。通常包括但不限于:

  • 編譯器:如 gcc 和 g++(GNU 編譯器集合的一部分)。
  • 鏈接器:如 ld(GNU 鏈接器)。
  • 調試工具:如 gdb(GNU 調試器)。
  • 庫文件:如 libstdc++(C++ 標準庫)。
  • 文本編輯器:如 vim 或 nano。
  • 構建工具:如 make 和 autotools(autoconf, automake, libtool)。
  • 包管理工具:如 rpm-build。

這些工具是軟件開發的基本組成部分,對于編寫、編譯、調試和打包應用程序非常重要。

編譯 binutils-gdb 工具:

cd binutils-gdb/
./configure  --enable-gold
# 使用所有可用的 CPU 核心進行并行編譯,加快編譯速度。
make -j$(nproc)
# 以 root 權限安裝編譯好的 binutils
make install

其中,configure 選項的含義如下:

  • --enable-gold:選項用于在編譯 binutils-gdb 時啟用 gold 鏈接器的支持。gold 是 GNU 鏈接器的一個替代品,設計用于提供更好的性能和額外的功能。

安裝好上述工具后,可在 /usr/local/bin/ 路徑下看到日常開發中常用的二進制工具,如下:

[root@localhost repo]# ls /usr/local/bin
addr2line  cpp      gcc-ar      gcov-dump      gp-archive       gprof         ld.bfd    objcopy      readelf   texi2dvi                 x86_64-pc-linux-gnu-gcc
ar         dwp      gcc-nm      gcov-tool      gp-collect-app   gprofng       ld.gold   objdump      size      texi2pdf                 x86_64-pc-linux-gnu-gcc-15.0.0
as         elfedit  gcc-ranlib  gdb            gp-display-html  help2man      lto-dump  pdftexi2dvi  strings   texindex                 x86_64-pc-linux-gnu-gcc-ar
c++        g++      gcore       gdb-add-index  gp-display-src   install-info  makeinfo  pod2texi     strip     x86_64-pc-linux-gnu-c++  x86_64-pc-linux-gnu-gcc-nm
c++filt    gcc      gcov        gdbserver      gp-display-text  ld            nm        ranlib       texi2any  x86_64-pc-linux-gnu-g++  x86_64-pc-linux-gnu-gcc-ranlib

運行其中一個工具試驗一下:

[root@localhost repo]# addr2line --help
Usage: addr2line [option(s)] [addr(s)]
 Convert addresses into line number/file name pairs.
 If no addresses are specified on the command line, they will be read from stdin
 The options are:
  @<file>                Read options from <file>
  -a --addresses         Show addresses
  -b --target=<bfdname>  Set the binary file format
  -e --exe=<executable>  Set the input file name (default is a.out)
  -i --inlines           Unwind inlined functions
  -j --section=<name>    Read section-relative offsets instead of addresses
  -p --pretty-print      Make the output easier to read for humans
  -s --basenames         Strip directory names
  -f --functions         Show function names
  -C --demangle[=style]  Demangle function names
  -R --recurse-limit     Enable a limit on recursion whilst demangling.  [Default]
  -r --no-recurse-limit  Disable a limit on recursion whilst demangling
  -h --help              Display this information
  -v --version           Display the program's version

addr2line: supported targets: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 pei-i386 pe-x86-64 pei-x86-64 elf64-little elf64-big elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex plugin
Report bugs to <https://sourceware.org/bugzilla/>

可以正常使用,但是當運行 gdb 時,卻報如下錯誤:

[root@localhost repo]# gdb --help
gdb: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by gdb)
gdb: /lib64/libstdc++.so.6: version `CXXABI_1.3.15' not found (required by gdb)
gdb: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by gdb)
gdb: /lib64/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by gdb)

上述錯誤信息表明 gdb 依賴的 libstdc++.so.6 庫版本不滿足要求。具體來說,gdb 需要的 GLIBCXX_3.4.30 和 CXXABI_1.3.15 版本在你的系統中找不到。這通常是因為你的系統中的 libstdc++ 庫版本過舊。 為解決該問題,特進行如下操作:

# 更新 libstdc++ 庫
yum update
yum install libstdc++-devel

# 驗證安裝
strings /usr/local/lib64/libstdc++.so.6 | grep GLIBCXX
strings /usr/local/lib64/libstdc++.so.6 | grep CXXABI

# 設置庫路徑到 .bashrc 文件中,以便每次登錄時自動設置
vi ~/.bashrc
# 在文件最后添加如下行:
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

進行如上操作后,即可解決 gdb 因為 libstdc++ 庫版本不匹配而無法運行的問題。如果系統提供的庫版本過舊,可以從源代碼編譯安裝較新版本的 libstdc++ 庫。

編譯 gcc 工具:

mkdir build
cd build
../configure --enable-languages=c,c++ --disable-multilib 
# 使用所有可用的 CPU 核心進行并行編譯,加快編譯速度。
make -j$(nproc)
# 以 root 權限安裝編譯好的 GCC
make install

其中,configure 選項的含義如下:

  • --enable-languages=c,c++:啟用 C 和 C++ 語言支持。
  • --disable-multilib:禁用多庫支持,減少編譯時間。

安裝完成后,驗證 gcc/g++ 是否正確安裝:

[root@localhost ~]# gcc --version
gcc (GCC) 15.0.0 20241023 (experimental)
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

[root@localhost ~]# g++ --version
g++ (GCC) 15.0.0 20241023 (experimental)
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

你應該看到類似如上的輸出,說明 gcc/g++ 已成功安裝。通過以上步驟,你可以下載并安裝 g++ 15.0.0 版本。

11. 總結

通過以上步驟,你已經成功地在 Linux 平臺上從源碼編譯 QEMU,并創建和配置了一個虛擬機。QEMU 提供了強大的虛擬化功能,結合 KVM 可以顯著提高虛擬機的性能。

責任編輯:武曉燕 來源: Linux二進制
相關推薦

2009-07-06 19:29:37

云計算私有云服務器虛擬化

2018-03-07 15:24:41

PythonMySQL

2010-04-07 13:05:57

2017-12-25 11:50:57

LinuxArch Linux

2024-07-22 11:43:28

LVMPnetLab網絡

2025-04-08 09:30:00

SeataDocker分布式系統

2020-10-28 15:03:25

C+代碼開發

2009-12-17 08:57:28

Windows 7磁盤分區

2022-08-29 15:19:09

CSS煙花動畫

2024-12-02 14:48:30

Docker鏡像文件

2024-09-13 15:20:46

2017-09-28 09:40:36

圖像分類準確率

2012-03-22 10:33:33

思杰XenDesktop

2015-07-30 09:35:24

滑動返回代碼

2011-09-05 12:36:08

路由器限速linux路由器

2017-11-29 11:14:52

離線緩存URL協議緩存

2017-08-24 08:31:41

2013-03-18 16:09:27

JavaEEOpenfire

2011-06-07 16:03:48

匿名SQL Server

2021-11-12 11:28:01

Linux 內核驅動Linux 系統
點贊
收藏

51CTO技術棧公眾號

亚洲最新在线观看| 无码人妻精品一区二区三区不卡| 国产伦精品一区二区三区四区 | 韩国一区二区三区视频| 日韩视频在线一区二区三区| 欧美日韩在线播| 你懂的视频在线一区二区| 欧美人妻一区二区| 色综合一区二区日本韩国亚洲| 99久久久国产精品免费蜜臀| 久久综合伊人77777尤物| 97公开免费视频| 人人九九精品| 日韩欧美美女在线观看| 亚洲一区二区三区激情| 91九色极品视频| 三级在线观看免费大全| 成人黄色在线| 国产精品久久久久一区二区三区共| 欧美专区在线视频| 黄色国产在线观看| 小视频免费在线观看| 99国产欧美久久久精品| 91地址最新发布| 一个人看的视频www| 亚洲精品白浆| 成人在线一区二区三区| 欧美精品videosex性欧美| 中文字幕avav| 金瓶狂野欧美性猛交xxxx| 国产传媒欧美日韩成人| 国内精品美女av在线播放| 三级视频网站在线观看| 欧美13videosex性极品| 国产网站一区二区| 国产欧美一区二区三区视频| 波多野结衣在线网址| 四虎影视精品| 欧美成人精品高清在线播放| 日本男女交配视频| 天堂成人在线视频| 日韩一区精品视频| 少妇久久久久久| 日韩不卡的av| 日日夜夜精品| 精品视频在线看| 国产性生交xxxxx免费| 精品丝袜在线| 亚洲国产精品高清| 99国产高清| 狠狠人妻久久久久久综合| 日韩精品水蜜桃| 日韩欧美一级精品久久| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 人人妻人人澡人人爽精品欧美一区| 一区二区三区www污污污网站| 日韩一区二区在线| 一区二区在线视频| 小日子的在线观看免费第8集| 亚瑟国产精品| 91精品国产综合久久福利软件| 黄网站色视频免费观看| 免费在线黄色网址| 国产麻豆精品视频| 欧美最猛性xxxx| 亚洲欧美综合另类| 91成人精品| 精品视频www| 色www免费视频| 第四色日韩影片| 国产精品色在线| 一本一道久久a久久综合精品| 刘玥91精选国产在线观看| 日韩va亚洲va欧美va久久| 国产精品国产三级国产aⅴ9色| 免费在线观看黄视频| 欧美日韩视频| 宅男66日本亚洲欧美视频| av免费观看不卡| 黄色成人小视频| 精品久久久久人成| 99re8这里只有精品| 国产天堂素人系列在线视频| 国产精品正在播放| 成人在线免费网站| 国产精品毛片久久久久久久av| 精品一区二区三区日韩| 欧美一级黑人aaaaaaa做受| 日本一级特级毛片视频| 国内自拍视频一区二区三区| 国产亚洲精品久久久优势| 中文字幕1区2区| 亚洲一区二区av| 日本道在线观看一区二区| 黄色网络在线观看| 激情图片在线观看高清国产| 欧美性猛交xxxx黑人猛交| 妺妺窝人体色www看人体| 亚洲电影观看| 制服丝袜av成人在线看| 特级丰满少妇一级| 国产精品久久亚洲不卡| 色综合久久六月婷婷中文字幕| r级无码视频在线观看| 成人福利在线观看视频| 亚洲欧洲美洲综合色网| 亚洲国产午夜伦理片大全在线观看网站| 无码国产伦一区二区三区视频| 国产成人av电影| 91亚色免费| 国产鲁鲁视频在线观看免费| 一区二区三区日韩欧美| 三级在线免费观看| av电影高清在线观看| 亚洲男人电影天堂| 污污污污污污www网站免费| 悠悠资源网亚洲青| 日韩欧美国产一区二区在线播放| 无码熟妇人妻av| 国产一区二区三区不卡视频网站| 亚洲欧美中文日韩在线v日本| 人妻无码一区二区三区| 亚洲精品小说| 国产精品视频久| 国产色视频在线| 国产免费成人在线视频| 亚欧精品在线| 岛国成人毛片| 欧美在线视频不卡| www.com污| 999精品视频在这里| 欧美精品一区在线观看| 粉嫩av蜜桃av蜜臀av| 欧美91精品| 国模视频一区二区三区| 国产福利资源在线| 99久久国产综合色|国产精品| 91免费网站视频| 免费日韩成人| 中文字幕欧美日韩| 波多野结衣电车| 国产一区二区三区黄视频 | 国产精品日韩久久久久| 每日更新在线观看av| 欧美色另类天堂2015| 国产不卡的av| 女人香蕉久久**毛片精品| 亚洲精品欧美日韩| 神马午夜电影一区二区三区在线观看| 亚洲精品一二三| 一本之道在线视频| 牛牛国产精品| 国产一级二级三级精品| 北岛玲一区二区三区| 亚洲激情成人在线| 色男人天堂av| 欧美黄免费看| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 日本大胆欧美| 欧美风情在线观看| 国产寡妇亲子伦一区二区三区四区| 成人黄色av电影| 亚洲国产精品久久久久久女王| 免费看av不卡| 日韩精品一区二区三区老鸭窝| 日本黄色免费片| 国产精品久久久久久模特| 成人国产精品一区| 黄色片免费在线| 亚洲在线视频一区| www国产视频| 久久精品女人| 成人区精品一区二区| 91九色美女在线视频| 9191久久久久久久久久久| 色欲人妻综合网| 日韩在线一区二区三区| 亚洲一二区在线| 日韩国产在线不卡视频| 日韩中文第一页| 国产av无码专区亚洲av| 亚洲五码中文字幕| 国产三级视频网站| 美女精品自拍一二三四| 亚洲永久在线观看| 91www在线| 国产亚洲精品久久久优势| 国产熟女精品视频| 精品久久久久久电影| 中文字幕第69页| 日韩成人一级大片| 男人天堂成人网| 色天下一区二区三区| 国产欧美一区二区三区久久 | 欧美一区二区三区精品电影| 98在线视频| 色天使久久综合网天天| 免费在线观看a级片| 久久伊人中文字幕| 欧美女人性生活视频| 国产电影一区二区在线观看| 国产精品视频公开费视频| 男女羞羞视频在线观看| 亚洲乱码一区二区| 精品不卡一区二区| 亚洲男人的天堂在线观看| 久久丫精品国产亚洲av不卡| 国产在线日韩欧美| av丝袜天堂网| 亚洲精品社区| 久久亚洲综合网| 国产aa精品| 色综合视频一区中文字幕| 国产黄色片在线观看| 亚洲成人av在线播放| 动漫精品一区一码二码三码四码| 国产精品2024| 国产视频手机在线播放| 一区二区高清| 国产女教师bbwbbwbbw| 日韩精品免费| 奇米影视首页 狠狠色丁香婷婷久久综合| 午夜不卡影院| 欧美黑人一区二区三区| 久操免费在线| 日韩美女一区二区三区| 中文字幕精品一区二| 亚洲天堂2016| 日本人妻一区二区三区| 久久精品国产一区二区| 日韩手机在线观看视频| 色天天久久综合婷婷女18| 麻豆精品传媒视频| 欧美三级电影在线| 国产精品1区2区在线观看| 1区2区3区在线观看| 精品丝袜一区二区三区| 后入内射欧美99二区视频| 欧美一级高清大全免费观看| 国产精品成人av久久| 亚洲精品网站在线观看| 五月综合色婷婷| 亚洲欧美电影一区二区| 粉嫩av性色av蜜臀av网站| 一区免费观看视频| 中文国语毛片高清视频| 国产精品黄色在线观看| 91香蕉国产线在线观看| 久久国产乱子精品免费女| 亚洲黄色a v| 国产一区清纯| 久久综合久久久久| 91久久夜色精品国产九色| 成年女人18级毛片毛片免费 | 亚洲美女黄色片| 免费av在线电影| 一本色道久久综合亚洲精品小说| 国产高清美女一级毛片久久| 永久555www成人免费| 91福利在线视频| 久久色免费在线视频| 国产成人高清精品| 欧美精品videosex极品1| 理论不卡电影大全神| 日本成人精品在线| 国产成人亚洲一区二区三区| 成人精品一区二区三区电影黑人| 精品国产伦一区二区三区观看说明| 91九色偷拍| 羞羞色国产精品网站| 天堂资源在线亚洲资源| 亚洲精品国产偷自在线观看| 农民人伦一区二区三区| 久久久久久久波多野高潮日日| 国产一级特黄a大片免费| 国产一区在线观看麻豆| 亚洲啪av永久无码精品放毛片 | 日本视频免费观看| 欧美日韩激情一区二区| 国产又黄又猛又粗又爽| 欧美三级在线视频| 午夜老司机福利| 欧美一区二区三区色| 隣の若妻さん波多野结衣| 国产亚洲精品一区二555| 麻豆影院在线| 日韩在线免费视频观看| 日本色护士高潮视频在线观看 | 久久嫩草精品久久久精品| 国产传媒在线看| 久久久久久久久免费| 亚洲天堂成人av| 欧美激情一区二区在线| 精品爆乳一区二区三区无码av| 色综合久久久久网| 国产www视频| 亚洲天堂免费观看| 免费在线看电影| 国产精品美女网站| 精品国产一区二区三区成人影院 | 国产精品自在线| 久久91导航| 国产精品r级在线| 日本在线成人| 日韩一区国产在线观看| 国产一区二区三区站长工具| 日本精品福利视频| 日韩电影在线观看电影| 污污内射在线观看一区二区少妇| 国产精品免费视频网站| 久久不卡免费视频| 一本大道久久a久久综合| 国产suv一区二区| 中文字幕综合一区| 无遮挡爽大片在线观看视频| 成人午夜影院在线观看| 91精品综合| xx欧美撒尿嘘撒尿xx| 久久久国产精华| 日韩欧美高清在线观看| 欧美日韩中文字幕综合视频| 精品毛片在线观看| 日韩中文在线中文网三级| 性欧美hd调教| 免费成人深夜夜行视频| 99精品福利视频| 动漫av在线免费观看| 99久久精品情趣| 欧美精品成人久久| 欧美老女人在线| 亚洲va久久久噜噜噜无码久久| 精品对白一区国产伦| 国产原创精品视频| 国产自摸综合网| 日韩欧美精品综合| 日韩av片网站| 亚洲国产电影在线观看| 91黑人精品一区二区三区| 亚洲区在线播放| 国产精品av一区二区三区| 国产精品影片在线观看| 国产乱码精品一区二区三区四区| 99蜜桃臀久久久欧美精品网站| 老色鬼精品视频在线观看播放| av男人的天堂av| 玉米视频成人免费看| 国产毛片久久久久| 插插插亚洲综合网| 欧美a级大片在线| av日韩在线看| 不卡的看片网站| 成人免费视频毛片| 亚洲欧美日韩精品| 全球最大av网站久久| 一区精品视频| 国产日韩一区二区三区在线播放| 日本少妇xxxx| 第一福利永久视频精品| 国产精品欧美激情在线| 久久国产精品久久久久久久久久| 另类专区亚洲| 色噜噜色狠狠狠狠狠综合色一| 美女一区二区久久| 久久久久久久麻豆| 欧美成人官网二区| 免费v片在线观看| 日本日本精品二区免费| 久久99久久精品欧美| 免费中文字幕视频| 日韩激情视频在线| 天堂成人av| 国产精品一区免费观看| 亚洲免费网址| 最新版天堂资源在线| 狠狠色香婷婷久久亚洲精品| 国产乱理伦片a级在线观看| 91免费在线视频网站| 成人影院天天5g天天爽无毒影院| 一区二区三区四区毛片| 亚洲午夜精品17c| 国产毛片在线| 99re资源| 日韩国产欧美在线视频| 国产67194| 亚洲欧美一区二区激情| 四虎影视精品永久在线观看| 久艹视频在线免费观看| 日本一二三不卡| 少妇无码一区二区三区| 国产精品久久中文| 亚洲二区视频| 日韩免费高清一区二区| 色94色欧美sute亚洲线路一久| free性欧美hd另类精品| 日本高清久久一区二区三区| 国产大陆精品国产| 一级特黄aaa| 91精品国产乱码久久久久久蜜臀| 欧美电影免费观看高清| 999在线精品视频|