Mysql编译mips_【转】MIPS交叉编译环境的建立

本文介绍了如何在Linux环境下建立MIPS ELF版本的交叉编译环境,重点讲解了Sourcery CodeBench Lite 2013.05-65的安装过程,并展示了使用GDB在模拟器上调试MIPS程序的步骤,包括编译链接和设置断点。
摘要由CSDN通过智能技术生成

原文网址:http://imgtec.eetrend.com/forum/2371

我觉得对于MIPS处理起来说最令新手头疼的应该就是编译环境的建立了,这点MIPS做的确实不是很好,不像ARM那样有许多的工具和资料,只能自己摸索,自己试了很多也走了很多弯路,这里向大家介绍一款很出色的免费编译环境,希望对大家有所帮助。

可以看到MIPS有两个版本GNU/Linux版本和ELF版本,GNU/Linux版本用于开发linux应用,而ELF版本是用于开发裸机程序以及RTOS程序的,这里我主要介绍ELF版本的,ELF版本中带有模拟器,可以很方便的调试程序。接下来主要介绍Linux下ELF版本的安装与使用。

https://sourcery.mentor.com/GNUToolchain/release2553 在网页中选择IA32 GNU/Linux Installer 进行下载,下载之后为

3f33a4e36dcca9477e54bcf3a6c2c33d.png

更改为可运行属性后,直接通过./mips-2013.05-65-mips-sde-elf.bin命令运行即可,不过需要注意的是需要首先安装awk grep sed bzip2 gunzip等软件,而且如果Linux系统使用selinux的话需要先关闭selinux才能正常安装,安装的过程比较简单,全部默认设置即可,安装完成之后,重新启动,在终端中输入mips-sde-elf-gcc -v命令,出现gcc version 4.7.3 (Sourcery CodeBench Lite 2013.05-65)即表示安装成功。

接下来我想大家介绍下如何使用gdb在模拟器上调试MIPS程序使用如下getting started文档中的示例程序:

#include

int factorial(int n) {

if (n == 0)

return 1;

return n * factorial (n - 1);

}

int main () {

int i;

int n;

for (i = 0; i < 10; ++i) {

n = factorial (i);

printf ("factorial(%d) = %d\n", i, n);

}

return 0;

}

使用如下命令编译程序

mips-sde-elf-gcc -o factorial main.c -T script

其中script为相关的链接脚本,程序自带一系列的链接脚本均在CodeBench安装路径下的mips-sde-elf/lib/中,各链接脚本的针对的目标详见getting started文档,这里我们需要使用的mipssim-hosted.ld,将其考入main.c所在路径中,通过命令:

mips-sde-elf-gcc -o factorial main.c -T mipssim-hosted.ld -g进行编译,之后就可以通过gdb对这个程序进行调试了。

通过指令:

mips-sde-elf-gdb factorial进入GDB命令行界面

首先连接模拟器:

target sim

加载程序:

load

在main程序出设置断点:

break main

开启反汇编功能:

set disas on

开始调试程序:

run

20da3c6c9ec3f6d8229ac7120f0ed659.png

驱动器 D 中的卷是 LINUX 卷的序列号是 4471-561B D:\桌面\mips交叉编译环境 的目录 2009-10-22 20:27 <DIR> . 2009-10-22 20:27 <DIR> .. 2009-10-22 20:09 27,425,338 gcc-3.4.3.tar.bz2 2009-10-22 20:08 7,421,782 binutils-2.10.91.0.2.tar.bz2 2009-10-22 20:08 242,445 glibc-linuxthreads-2.5.tar.bz2 2009-10-22 20:10 20,544,628 glibc-2.5.tar.gz 2009-10-22 20:20 1,720 elf-machine-rela-mips.dpatch 2009-10-22 20:26 4,727 建立基于linux的MIPS交叉编译环境 .txt 6 个文件 55,640,640 字节 2 个目录 6,793,084,928 可用字节 三、构建过程 1、准备环境 目标平台: mipsel-linux(即little endian,x86也是little endian的,不懂的话自己到网上查资料吧) 安装目录: /usr/local/crossdev 源代码安装目录: /usr/local/src 注:没有的目录请自行建立。 2、准备MIPS环境的头文件 我们是在i386下编译的,但要使用MIPS的头文件定义才能正确编译MIPS交叉编译工具。这些头文件都在kernel源程序中。 cd /usr/local/src/ tar xzvf linux-2.4.2.tar.gz cd linux/ make ARCH=mips menuconfig 在"CPU selection"中, 选中"(R3000) CPU type",也可以选你实际的MIPS平台的CPU类型 在"General setup"中, 选中"Generate little endian code" make dep mkdir -p /usr/local/crossdev/mipsel-linux/include cp -r /usr/local/src/linux/include/asm-mips /usr/local/crossdev/mipsel-linux/include/asm cp -r /usr/local/src/linux/include/linux /usr/local/crossdev/mipsel-linux/include/ 3、编译binutils cd /usr/local/src/ tar xzvf binutils-2.11.90.0.31.tar.gz cd binutils-2.11.90.0.31/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev make make install export PATH=/usr/local/crossdev/bin:$PATH 4、编译自举的(bootstrap)gcc 因为这时还没有MIPS的glibc库可以使用,只能编译一个最简单的gcc,用这个gcc编译出glibc后就可以再编译一个完成的gcc了。 cd /usr/local/src/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c --with-newlib --disable-shared make make install 注:以上编译安装的工具已经可以直接编译MIPS的kernel(make zImage)了。 5、编译glibc 现在可以使用刚才建立的binutils和gcc来编译MIPS的glibc了。 cd /usr/local/src/ tar xzvf glibc-2.2.3.tar.gz cd glibc-2.2.3/ tar xzvf ../glibc-linuxthreads-2.2.3.tar.gz patch -p1 < ../glibc-2.2.3-mips-base-addr-got.diff CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib ./configure --host=mipsel-linux --prefix=/usr/local/crossdev/mipsel-linux --enable-add-ons=linuxthreads make make install 6、重新编译完整的gcc cd /usr/local/src/ rm -rf gcc-3.0.2/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c,c++ make make install 以上就构建好了一套自己的MIPS交叉编译环境,目录在/usr/local/crossdev下,你可以把它打包拷贝到其它i386的Linux系统下也能使用。 要使用其来交叉编译时请先加上PATH环境变量:export PATH=/usr/local/crossdev/bin:$PATH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值