如何在 x86 架构上交叉编译 arm64 架构的 qemu?

2023-03-14 18:45:08 +08:00
 wniming

楼主在 fedora37 和 ubuntu22.04 上试了都不行,都是在 configure 阶段遇到奇怪的,不知道怎么解决的错误。

我在 fedora 上执行的 configure 命令行是:

/a/source/qemu-7.2.0/configure --target-list=aarch64-softmmu --enable-debug --cross-prefix=aarch64-linux-gnu- --prefix=/home/d/.local

报错是:

ERROR: "aarch64-linux-gnu-gcc" cannot build an executable (is your linker broken?)

我在 ubuntu 上执行的命令行是:

~/qemu-7.2.0/configure --target-list=aarch64-softmmu --enable-debug --cross-prefix=aarch64-linux-gnu- --prefix=/home/d/.local

报错是:

ERROR: pkg-config binary 'aarch64-linux-gnu-pkg-config' not found

3393 次点击
所在节点    Linux
25 条回复
424778940
2023-03-14 20:52:29 +08:00
@wniming 你得是装了 arm64 的 libxxx 包这个路径才会有东西吧
装 arm 的 lib 还要添加新的 deb 源才行
424778940
2023-03-14 20:55:28 +08:00
这是我自己的对应 22.10 的脚本 添加 arm 源, 你如果用别的版本 记得自己改掉发行版代号
sudo sed -i 's/^deb/deb [arch=amd64]/g' /etc/apt/sources.list
sudo dpkg --add-architecture arm64
sudo dpkg --add-architecture armhf
sudo tee -a /etc/apt/sources.list.d/source-arm.list > /dev/null <<EOT
deb [arch=armhf,arm64] http://ports.ubuntu.com/ kinetic main restricted
deb [arch=armhf,arm64] http://ports.ubuntu.com/ kinetic-updates main restricted
deb [arch=armhf,arm64] http://ports.ubuntu.com/ kinetic universe
deb [arch=armhf,arm64] http://ports.ubuntu.com/ kinetic-updates universe
deb [arch=armhf,arm64] http://ports.ubuntu.com/ kinetic multiverse
deb [arch=armhf,arm64] http://ports.ubuntu.com/ kinetic-updates multiverse
deb [arch=armhf,arm64] http://ports.ubuntu.com/ kinetic-backports main restricted universe multiverse
EOT
sudo apt update

需要安装的包列表参考 https://wiki.qemu.org/Hosts/Linux#Cross_builds

安装命令格式为 sudo apt install libssl-dev:arm64 注意替换你自己需要的包

pkg-config 的 wrapper 在 20.04 之后好像就没有包了 自己找一个或者写一个吧 也没几句话的事情
wniming
2023-03-15 09:30:23 +08:00
@424778940 感谢大佬指点,搞定了,而且不需要自己写 pkg-config 的 wrapper

不过我主要是想在 fedora 系统上交叉编译 qemu ,还不知道要怎么搞
wniming
2023-03-15 10:11:26 +08:00
@424778940 我发现 fedora 的交叉编译只能编译内核,bootloader 等裸程序,连 hello world 都不支持:

https://discussion.fedoraproject.org/t/cross-compiling-to-arm/71516/6
424778940
2023-03-15 11:11:58 +08:00
@wniming 我不用 rhql 系做开发 不知道
这类东西你想弄肯定都是有办法的 只不过就是做法干不干净整不整洁的问题
我还是建议你用 ubuntu/xubuntu 的 2204 或者 2210 做这种开发
发行版 ist 不要来杠我 这仅仅是我个人观点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/923983

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX