交叉编译qemu

本文详细记录了交叉编译QEMU的过程,包括搭建新的交叉编译工具链,从zlib库到SDL库的构建,解决过程中遇到的依赖问题和编译错误,最终成功交叉编译出QEMU。
摘要由CSDN通过智能技术生成
 

交叉编译qemu

前言:libX11的交叉编译确实非常繁琐,而对于系统调用accept4和preadv&pwritev则需要glibc-2.10以上才会支持,之前的glibc是2.9很悲催。。。。明天去龙芯机子上调试,但愿比较顺利。

作者:口口口

日期:2011/12/6

目录

准备工作... 1

过程步骤... 2

重新搭建交叉编译工具... 2

建立zlib库... 4

建立libpng库... 5

安装xproto包... 6

建立libXau库... 6

安装xcb-proto. 6

建立libgpg-error库... 7

建立libgcrypt库... 7

建立libxml库... 8

建立libxslt库... 8

建立libxcb库... 9

安装Xtrans. 10

安装kbproto. 10

安装inputproto. 11

建立libXdmcp库... 11

建立libX11库... 11

安装xextproto. 13

建立libXext库... 13

安装videoproto. 13

建立libXv库... 14

建立SDL库... 14

交叉编译qemu. 15

准备工作

主机平台:

i686-linux

内核文件:

wh.tar.gz

二进制工具:

binutils-2.19.1.tgz

gcc及其相关:

gcc-4.4.0-3a.tgz

gmp-4.3.0.tar.gz

mpfr-2.4.2.tar.gz

glibc库及其相关:

glibc-2.13.tar.gz

glibc-ports-2.13.tar.gz

zlib库:

zlib-1.2.5.tar.gz

libpng库:

libpng-1.5.6.tar.gz

libX11库及其相关:

libX11-1.3.2.tar.bz2

libgcrypt-1.4.6.tar.gz

libgpg-error-1.10.tar.gz

libxau_1.0.6.orig.tar.gz

libxcb-1.4.tar.bz2

libxdmcp_1.1.0.orig.tar.gz

libxext_1.1.2.orig.tar.gz

libxml2-2.7.4.tar.gz

libxslt_1.1.26.orig.tar.gz

libxv_1.0.5.orig.tar.gz

x11proto-input_2.0.2.orig.tar.gz

x11proto-kb_1.0.5.orig.tar.gz

x11proto-video_2.3.0.orig.tar.gz

x11proto-xext_7.1.1.orig.tar.gz

xcb-proto-1.6.tar.gz

xproto-7.0.20.tar.gz

xtrans_1.2.6.orig.tar.gz

SDL库:

SDL-1.2.14.tar.gz

qemu源文件:

qemu-0.14.1

目录结构:

/crosstool 交叉编译工具根目录

/crosstool/source 存放源文件

/crosstool/mips64el-tools 存放编译出来的工具

/crosstool/binutils /crosstool/gcc /crosstool/glibc 相关工具的编译目录,每个目录下都有build-mips64el-linux目录

/crosstool/kernel 存放内核文件,里面的/headers为存放头文件目录

/crosstool/zlib 交叉编译zlib的工作目录

/crosstool/libpng 交叉编译libpng的工作目录

/crosstool/x11 交叉编译libX11及其相关库和包的工作目录

/crosstool/sdl 交叉编译SDL及其相关库和包的工作目录

/crosstool/qemu 交叉编译qemu的工作目录

/crosstool/qemu/ccp-qemu 存放交叉编译出来的qemu

过程步骤

1> 下载源文件和建立工作目录

2> 重新搭建交叉编译工具

3> 建立zlib库

4> 建立libpng库

5> 建立libX11库及其相关

6> 建立SDL库

7> 交叉编译qemu

8> 调试

重新搭建交叉编译工具

由于glibc从2.10版本才开始支持系统调用accept4和preadv & pwritev,而之前所做交叉编译器的glibc版本很悲催的是2.9,所以在交叉编译qemu时会出现:

osdep.o: In function `qemu_accept':

/crosstool/qemu/qemu-0.14.1/osdep.c:158: undefined reference to `accept4'

……

/crosstool/qemu/qemu-0.14.1/posix-aio-compat.c:156: undefined reference to `preadv'

collect2: ld returned 1 exit status

这样的错误,所以必须更换glibc。

进入超级权限,删除/crosstool目录下mips64el-tools目录。

su

cd /crosstool

rm -r mips64el-tools

内核头文件,二进制工具和gcc辅助编译器

比较简单,过程参考《mips64el交叉开发工具链搭建》,注意修改t-linux64。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值