当前位置: 首页 > 工具软件 > StratoVirt > 使用案例 >

源码编译OpenEuler-StratoVirt过程&&遇到问题及其解决方案

夹谷烨赫
2023-12-01

源码编译OpenEuler-StratoVirt过程&&遇到问题及其解决方案

环境

OpenEuler 操作系统

环境配置

安装rust环境

配置rust字节镜像链接

export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"

官方脚本

curl https://sh.rustup.rs -sSf | sh

配置环境变量到当前终端

source $HOME/.cargo/env

在~/.cargo/config文件写入,加速Crate.io

[source.crates-io]
replace-with = 'rsproxy'

[source.rsproxy]
registry = "https://rsproxy.cn/crates.io-index"

编译问题及其解决方案

根据官方指南

git clone https://gitee.com/openeuler/stratovirt.git
cd stratovirt
cargo build --release

cargo build报错

error: linking with `cc` failed: exit status: 1
  |
  = note: "cc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-Wl,--as-needed" "-L" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.0.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.1.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.10.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.11.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.12.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.13.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.14.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.15.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.2.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.3.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.4.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.5.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.6.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.7.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.8.rcgu.o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.build_script_build.b3mrljdp-cgu.9.rcgu.o" "-o" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28" "/root/myStratoVirt/stratovirt/target/debug/build/bitflags-02fc4693344dac28/build_script_build-02fc4693344dac28.4o8qt7ort0bv98a8.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/root/myStratoVirt/stratovirt/target/debug/deps" "-L" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd-2f0b59bce8e4409b.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libpanic_unwind-79937357861ed704.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libminiz_oxide-1534dc117f75a428.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libadler-7a75071fd09f14c5.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libobject-e36f746ab228ea43.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libaddr2line-522a452dde874831.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgimli-5fbaa4cb5078dffd.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd_detect-8a8b11a44f07d7ca.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_demangle-2a8e33a44a1885a6.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libhashbrown-665eb61d232954e5.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-e813bddc627043b1.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libunwind-aa67144a76f9a282.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcfg_if-32be12cbfea7597c.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/liblibc-472199e25bfa1e47.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/liballoc-af1b67343e3b6064.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_core-d7f65e11001c161b.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore-d7926f131590f689.rlib" "-Wl,--end-group" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcompiler_builtins-8e0dea81c2814a1a.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-lgcc" "-lfdt"
  = note: /usr/bin/ld: cannot find -lfdt
          collect2: error: ld returned 1 exit status

解决过程

报错原因应该是缺少libfdt
经过网上查询,类似这种错误cannot find -lxxx,都是缺少libxxx库,尝试执行

yum install libfdt

发现下载了dtc这个包,但是依旧编译不成功,这里还需安装dtc-devel包,

yum install dtc-devel

最终解决方案

也就是说解决note: /usr/bin/ld: cannot find -lfdt问题需要安装dtcdtc-devel两个包

yum install dtc
yum install dtc-devel

随后编译成功

换yum源

为了提高yum速度,我更换了yum源。上述yum下载是在换源之后,可参考链接

参考

官网:StratoVirt
帖子:StratoVirt在x86_64下的初体验

 类似资料: