M5-mips交叉编译环境搭建
来源:互联网 发布:唱歌挣钱的软件 编辑:程序博客网 时间:2024/04/28 15:50
M5模拟器对MIPS指令集的支持限制为32位、小字节序,因此在制作交叉编译工具链时需要注意正确的字节序。文中的工具链基于linux-2.6.32、binutils-2.22、glibc-2.13、glibc-ports-2.13、gcc-4.4.6、gmp-5.0.0、mpfr-3.0.1构建。
- 创建宿主机编译环境
- 安装内核头文件
- 安装binutils
- 安装gcc引导编译器
- 安装glibc
- 安装gcc编译器
1.创建宿主机编译环境
执行su命令,切换至root权限。执行以下命令,将相关配置信息写入到环境变量。
# export CROSSROOT=/opt/mips-cross# export TARGET=mipsel-unknown-linux-gnu# export PREFIX=${CROSSROOT}/tools# export TARGET_PREFIX=${PREFIX}/${TARGET}# export PATH=${PREFIX}/bin:${PATH}
接下来在用户根目录为软件的编译建立相关的文件夹,build-binutils、build-boot-gcc、build-glibc和build-gcc
2.安装内核头文件
内核头文件安装是建立工具链的第一步。从网站http://www.linux.org上下载内核源代码包linux-2.6.32.tar.bz2并解压。进入解压出的内核文件夹linux-2.6.32,使用安装内核头文件
# make INSTALL_HDR_PATH=${PREFIX} ARCH=mips headers_install
变量INSTALL_HDR_PATH指定了安装的目标目录,变量ARCH指定了目标架构为MIPS。
3.安装binutils
binutils包中的工具常用来操作二进制目标文件,GNU汇编器as和链接器ld是该包中最重要的两个工具。从网站http://ftp.gnu.org上下载源代码文件binutils-2.22.tar.gz并解压。进入build-binutils目录,进行binutils的配置。
# ../binutils-2.22/configure –target=${TARGET} –prefix=${PREFIX} \
–disable-nls
--target指出了编译的目标系统是mipsel-unknown-linux-gnu,--prefix指出了binutils的安装目录。完成配置后进行编译、安装。
4.安装gcc引导编译器
本阶段将建立引导编译器。因为这时还没有MIPS的glibc库可以使用,只能编译一个最简单的gcc,用这个gcc编译出glibc后再重新编译完整在安装前从http://ftp.gnu.org和http://www.mpfr.org网站下载源代码文件gcc-4.4.6.tar.gz、gmp-5.0.0.tar.gz和gmp并移动到文件夹gcc-4.4.6内,同样将mpfr-3.0.1文件夹重命名为build-boot-gcc目录完成对gcc引导编译器的配置。
# ../gcc-4.4.6/configure –target=${TARGET} –prefix=${PREFIX} \
–disable-nls –disable-shared –without-headers –enable-languages=c \
–disable-multilib –disable-libmudflap –disable-libstdcxx-pch \
–disable-decimal-float –disable-threads –disable-libssp –disable-libgomp \
–disable-libffi –disable-libquadmath –disable-libitm
此配置信息禁用了自举编译器不需要的特性支持,指定生成一个最小化的gcc编译器。在编译时,会发生以下错误:
error: header files gmp-impl.h and longlong.h not found
这是由于在build-boot-gcc/gmp目录下找不到这两个头文件,解决方法是将gcc-4.4.6/gmp文件夹内的头文件目录下。然后继续编译,完成引导编译器的安装。
5.安装glibc
glibc是gnu发布的libc库,即C运行库,是linux系统中最底层的api。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。 安装glibc还需要相应glibc-ports的支持,下载相应源代码glibc-2.13.tar.gz和glibc-ports-2.13.tar.gz并解压,将解压出的glibc-ports-2.13文件夹重命名为ports并移动到文件夹glibc-2.13内。进入build-glibc目录完成对glibc的配置。
# ../glibc-2.13/configure –host=${TARGET} –prefix=${PREFIX} \
–enable-kernel=2.4.3 –with-headers=${PREFIX}/include –disable-profile \
–disable-multi-arch libc_cv_forced_unwind=yes libc_cv_ctors_header=yes \
libc_cv_c_cleanup=yes
在编译时会出现“cannot find -lgcc_eh”错误,解决方法如下:
# ln -s ${PREFIX}/lib/gcc/${TARGET}/4.4.6/libgcc.a \
${PREFIX}/lib/gcc/${TARGET}/4.4.6/libgcc_eh.a
继续编译并完成安装。
6.安装gcc编译器
安装glibc后,就可以安装支持C、C++的完整编译器。在安装引导编译器时已获得gcc的源代码,同样,复制gmp的头文件gmp-impl.h和longlong.h到build-gcc/gmp目录下避免错误的发生。 进入到build-gcc文件夹,执行以下配置命令:
# ../gcc-4.4.6/configure –target=${TARGET} –prefix=${PREFIX} \
–disable-multilib –disable-nls –disable-libstdcxx-pch –disable-shared \
–with-headers=${PREFIX}/include –enable-symvers=gnu –enable-c99 \
–enable-threads=posix –enable-languages=c,c++ –enable-long-long \
–enable-__cxa_atexit
在完成gcc的配置后,开始编译,最后完成完整编译器的安装。 至此,整个跨平台开发工具链都已设置好,可以直接在PC平台上编写、编译和链接基于MIPS指令集的程序了。
- M5-mips交叉编译环境搭建
- Ubuntu下搭建MIPS交叉编译环境
- Ubuntu下搭建MIPS交叉编译环境
- Ubuntu下搭建MIPS交叉编译环境
- Ubuntu下搭建MIPS交叉编译环境
- 简单搭建MIPS交叉编译环境------新手推荐
- 【Linux】Linux下搭建MIPS交叉编译环境
- ubuntu14.04系统下mips交叉编译环境搭建
- openssl交叉编译 mips环境
- Ubuntu安装mips平台交叉编译环境
- 路由器逆向分析------MIPS交叉编译环境的搭建(Buildroot)
- 搭建交叉编译环境
- 搭建交叉编译环境
- 交叉编译环境搭建
- 搭建交叉编译环境
- 交叉编译环境搭建
- 交叉编译环境搭建
- 搭建交叉编译环境
- 线性表-链表(一)
- 《c++编程》第3章第38题
- csuoj 2015.3.15
- 使用JDBC处理MySQL大数据(三)
- windows安装TortoiseGit详细使用教程【基础篇】
- M5-mips交叉编译环境搭建
- php 之 cookie 和 session 简单解读
- 第8周项目3(2)分数类的运算符重载(拓展)
- Android官方开发文档地址
- oracle data guard 知识点
- 小马哥--高仿红米note 主板型号 t8238型号 联通版 移动版拆机图与开机图
- R1 Lecture 10 Class Notes
- 从CVPR,到ICCV,再到ECCV
- 数据类型和Json格式