MIT操作系统课程CS6.828实验(1) —— 工具链安装
来源:互联网 发布:linux 提升用户权限 编辑:程序博客网 时间:2024/05/18 07:09
6.828中使用两类工具:
x86模拟器 - Qemu, 用于运行内核
编译工具链 - 汇编器,链接器,C编译器和调试器, 用于编译和测试内核
本节内容讲述下载和安装这些工具(假设已经熟悉常用Unix命令用法)
若是在Windows下搭建开发环境,需要安装Cygwin(确保安装flex和bison包,开发头文件需要)
以下介绍在Ubuntu下安装Qemu和编译器工具链
1. Qemu emulator安装
Qemu是现代的和快速的PC模拟器,6.828基于Qemu 1.7.0版本但是,QEMU调试功能,尽管强大,但是有些不成熟,因此,强烈推荐使用MIT的补丁版本,
1) 下载MIT 6.828 QEMU补丁版本
2) 在Linux上,可能需要安装SDL开发库以便获得图形VGA窗口,在Ubuntu下使用如下命令安装
3)配置qemu代码
prefix参数指定QEMU安装目录; 若没有该参数,默认安装到 /usr/local
The target-list参数指定QEMU模拟的CPU架构
4) 编译
5) 安装
2. 编译工具链
编译工具链是是一些工具程序的集合,包括C编译器,汇编器,链接器,用于把代码转换为可执行二进制文件,在本课程中需要一个编译工具链,产生ELF二进制格式的32-bit Intel架构指令
Ubuntu下可以使用默认安装的编译器工具链,不过要做如下的检测即可,也可以自己安装编译器工具链,以下分别介绍
2.1 测试工具链在Linux下已经一套适合6.828课程的工具链, 输入如下命令进行测试
该命令输出的第二行应该是elf32-i386
该命令应该输出/usr/lib/gcc/i486-linux-gnu/version/libgcc.a或/usr/lib/gcc/x86_64-linux-gnu/version/32/libgcc.a
若这些命令的测试输出如上所述,那么就不用安装自己的编译工具链
若gcc命令失败,需要安装开发环境, 在Ubunu下,用如下命令
在64-bit机器上,需要安装32-bit的支持库,但出现如下错误时,
"__udivdi3 not found"和"————muldi3 not found"时,在Ubuntu下,通过如下命令安装库文件即可
2.2 编译自己的工具链
下载如下工具包
ftp://ftp.gmplib.org/pub/gmp-5.0.2/gmp-5.0.2.tar.bz2
http://www.multiprecision.org/mpC/download/mpc-0.9.tar.gz
http://ftpmirror.gnu.org/binutils/binutils-2.21.1.tar.bz2
http://ftpmirror.gnu.org/gcc/gcc-4.6.1/gcc-core-4.6.1.tar.bz2
http://ftpmirror.gnu.org/gdb/gdb-7.3.1.tar.bz2
也可以使用这些包的最新版本,
按如下流程安装这些工具包
3. 参考
1. https://pdos.csail.mit.edu/6.828/2014/tools.html#qemu
0 0
- MIT操作系统课程CS6.828实验(1) —— 工具链安装
- MIT操作系统课程CS6.828实验(2) —— 实验工具指导
- MIT操作系统课程CS6.828实验(3) —— 启动PC(Lab1)
- MIT操作系统实验1-1
- MIT操作系统实验1-2
- MIT操作系统实验1-3
- MIT 操作系统实验 MIT JOS lab1
- MIT 操作系统实验 MIT JOS lab2
- MIT 操作系统实验 MIT JOS lab3
- MIT 操作系统实验 MIT JOS lab4
- MIT 操作系统实验 MIT JOS lab5
- 电子科技大学---操作系统课程实验(一)
- 电子科技大学---操作系统课程实验(二)
- 操作系统课程实验报告(三)
- 操作系统课程实验报告(四)
- 操作系统课程记录(1)——感想
- FZU操作系统课程实验 实验一
- 操作系统实验工具使用实践(一)
- C/C++何时使用引用和指针
- iOS Frame与Bound
- HDU 1247 字典树
- linux 设置缩进位数
- poj3007Buried memory 极角排序
- MIT操作系统课程CS6.828实验(1) —— 工具链安装
- Linux中内存buffer和cache的区别
- 8.1 幽灵(no.21-no.30)
- 栈—顺序栈的基本操作
- 复杂选择器分类总结图
- 抽象类和抽象函数
- hdu 1403 Longest Common Substring 后缀数组求最长公共子串
- C/C++语言字符串操作总结大全(超详细)
- 将JIRA Sprint开发进度导入Confluence Calendar 日历方式