




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
构建嵌入式 Linux 开发环境 V0.1基于 linux-3.0.3、binutils-2.21.1、glibc-2.13、glibc-ports-2.13、gcc-4.6.1、gmp-5.0.2、mpfr-3.0.1、mpc-0.9 构建。1.创建宿主机编译环境# apt-get install build-essential libncurses5-dev创建setbuildenv.sh脚本setbuildenv.sh+-setbuildenv.sh-+#!/bin/shexport PRJROOT=/home/mini/armexport TARGET=arm-linuxexport PREFIX=$PRJROOT/toolsexport TARGET_PREFIX=$PREFIX/$TARGETexport PATH=$PREFIX/bin:$PATH+-+$ source setbuildenv.sh$ cd$ mkdir arm$ cd $PRJROOT$ mkdir build-tools tools kernel$ cd $PRJROOT/build-tools$ mkdir build-binutils build-boot-gcc build-gcc build-glibc build-glibc-headers$ cd $PRJROOT/tools$ mkdir arm-linux2.安装内核头文件$ cd $PRJROOT/kernel$ wget /pub/linux/kernel/v3.0/linux-3.0.3.tar.gz$ tar xvf linux-3.0.3.tar.gz$ cd linux-3.0.3$ cp arch/arm/configs/s3c2410_defconfig ./.config$ make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig$ make ARCH=arm CROSS_COMPILE=arm-linux-$ mkdir -p $TARGET_PREFIX/include$ cp -r include/linux/ $TARGET_PREFIX/include$ cp -r include/asm-generic/ $TARGET_PREFIX/include$ cp -r arch/arm/include/asm/ $TARGET_PREFIX/include#$ make ARCH=arm CROSS_COMPILE=arm-linux-此步的目的是生成 include/linux/version.h 文件,而不是真正的编译,忽略所有错误。#3.编译 binutils$ cd $PRJROOT/build-tools$ wget /gnu/binutils/binutils-2.21.1.tar.gz$ tar xvf binutils-2.21.1.tar.gz$ cd build-binutils$ ./binutils-2.21.1/configure -target=$TARGET -prefix=$PREFIX$ make$ make install4.安装 glibc 头文件$ cd $PRJROOT/build-tools$ wget /pub/gnu/glibc/glibc-2.13.tar.gz$ wget /pub/gnu/glibc/glibc-ports-2.13.tar.gz$ tar xvf glibc-2.13.tar.gz$ tar xvf glibc-ports-2.13.tar.gz$ mv glibc-ports-2.13 ./glibc-2.13/ports$ cd build-glibc-headers$ ./glibc-2.13/configure -host=$TARGET -prefix=/usr -enable-add-ons -with-headers=$TARGET_PREFIX/include$ make cross-compiling=yes install_root=$TARGET_PREFIX prefix= install-headers#错误:+-+configure: error: GNU libc requires kernel header files from Linux 2.0.10 or later to be installed before configuring.+-+解决方法:在安装内核头文件的过程中,在设置好内核配置以后,没有使用相应的命令生成 include/linux/version.h 文件。$ cd $PRJROOT/kernel/linux-3.0.3/$ make ARCH=arm CROSS_COMPILE=arm-linux-$ cp -r include/linux/ $TARGET_PREFIX/include$ cp -r include/asm-generic/ $TARGET_PREFIX/include#错误:+-+/usr/bin/install: cannot stat /home/mini/arm/build-tools/build-glibc-headers/gnu/lib-names.h: No such file or directory+-+解决方法:方法一:$ su -# aptitude purge mawk# apt-get install gawk# exit$ cd $PRJROOT/build-tools/build-glibc-headers$ ./glibc-2.13/configure -host=$TARGET -prefix=/usr -enable-add-ons -with-headers=$TARGET_PREFIX/include$ make cross-compiling=yes install_root=$TARGET_PREFIX prefix= install-headers方法二:$ su -# apt-get install gawk# exit$ cd $PRJROOT/build-tools/build-glibc-headers$ vi config.make找到如下行:AWK = mawk将其修改为:AWK = gawk#5.安装 gcc 引导编译器$ cd $PRJROOT/build-tools$ wget /pub/gnu/gcc/gcc-4.6.1/gcc-4.6.1.tar.gz$ wget /gnu/gmp/gmp-5.0.2.tar.gz$ wget /mpfr-current/mpfr-3.0.1.tar.gz$ wget /mpc/download/mpc-0.9.tar.gz$ tar xvf gcc-4.6.1.tar.gz$ tar xvf gmp-5.0.2.tar.gz$ tar xvf mpfr-3.0.1.tar.gz$ tar xvf mpc-0.9.tar.gz$ mv gmp-5.0.2 ./gcc-4.6.1/gmp$ mv mpfr-3.0.1 ./gcc-4.6.1/mpfr$ mv mpc-0.9 ./gcc-4.6.1/mpc$ cd build-boot-gcc$ mkdir -p $TARGET_PREFIX/include/gnu$ touch $TARGET_PREFIX/include/gnu/stubs.h$ ./gcc-4.6.1/configure -target=$TARGET -prefix=$PREFIX -disable-shared -without-headers -with-newlib -enable-languages=c$ make all-gcc all-target-libgcc$ make install-gcc install-target-libgcc#错误:+-+./././gcc-4.6.1/libgcc/./gcc/gthr-posix.h:41:21: fatal error: pthread.h: No such file or directory+-+解决方法:如果没有安装 glibc 头文件,就开始安装 gcc 引导编译器,需要在 configure 后面加上 -disable-threads 选项。$ cd $PRJROOT/build-tools/build-boot-gcc$ ./gcc-4.6.1/configure -target=$TARGET -prefix=$PREFIX -disable-shared -disable-threads -without-headers -with-newlib -enable-languages=c#错误:+-+/home/mini/arm/tools/arm-linux/include/features.h:381:23: fatal error: gnu/stubs.h: No such file or directory+-+解决方法:$ mkdir -p $TARGET_PREFIX/include/gnu$ touch $TARGET_PREFIX/include/gnu/stubs.h#6.安装 glibc$ cd $PRJROOT/build-tools$ cd build-glibc$ CC=arm-linux-gcc ./glibc-2.13/configure -host=$TARGET -prefix=/usr -enable-add-ons -with-headers=$TARGET_PREFIX/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes$ ln -s $PREFIX/lib/gcc/arm-linux/4.6.1/libgcc.a $PREFIX/lib/gcc/arm-linux/4.6.1/libgcc_eh.a$ make$ make install_root=$TARGET_PREFIX prefix= install#错误:+-+configure: error: forced unwind support is required+-+解决方法:在 configure 后面加上 libc_cv_forced_unwind=yes 选项。$ cd $PRJROOT/build-tools/build-glibc$ CC=arm-linux-gcc ./glibc-2.13/configure -host=$TARGET -prefix=/usr -enable-add-ons -with-headers=$TARGET_PREFIX/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes#错误:+-+configure: error: the compiler must support C cleanup handling+-+解决方法:在 configure 后面加上 libc_cv_c_cleanup=yes 选项。$ cd $PRJROOT/build-tools/build-glibc$ CC=arm-linux-gcc ./glibc-2.13/configure -host=$TARGET -prefix=/usr -enable-add-ons -with-headers=$TARGET_PREFIX/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes#错误:+-+./sysdeps/unix/sysv/linux/sys/syscall.h:25:24: fatal error: asm/unistd.h: No such file or directory+-+解决方法:$ cd $PRJROOT/kernel/linux-3.0.3$ cp -r arch/arm/include/asm/ $TARGET_PREFIX/include#错误:+-+./ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S:30: Error: previous CFI entry not closed (missing .cfi_endproc)/tmp/cc9oYU9g.s: Error: open CFI at the end of file; missing .cfi_endproc directive+-+解决方法:$ cd $PRJROOT/build-tools/build-glibc$ vi ./glibc-2.13/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S找到如下行:ENTRY(_default_sa_restorer)在其下添加:END(_default_sa_restorer)找到如下行:ENTRY(_default_rt_sa_restorer)在其下添加:END(_default_rt_sa_restorer)#错误:+-+/bin/sh: cannot create /home/mini/arm/build-tools/build-glibc/posix/config-name.h.new: Directory nonexistent+-+解决方法:$ cd $PRJROOT/build-tools/build-glibc$ mkdir posix#错误:+-+./sysdeps/unix/syscall-template.S:82: Error: CFI instruction used without previous .cfi_startproc+-+解决方法:$ cd $PRJROOT/build-tools/build-glibc$ vi ./glibc-2.13/sysdeps/unix/syscall-template.S找到如下行:#define T_PSEUDO(SYMBOL, NAME, N) PSEUDO (SYMBOL, NAME, N)在其上添加:#define PSEUDO(name, syscall_name, args) .text; ENTRY (name); DO_CALL (syscall_name, args); cmn r0, $4096;方法来源:./glibc-2.13/ports/sysdeps/unix/sysv/linux/arm/sysdep.h#错误:+-+/home/mini/arm/tools/lib/gcc/arm-linux/4.6.1/././././arm-linux/bin/ld: cannot find -lgcc_eh+-+解决方法:$ ln -s $PREFIX/lib/gcc/arm-linux/4.6.1/libgcc.a $PREFIX/lib/gcc/arm-linux/4.6.1/libgcc_eh.a#错误:+-+./sysdeps/ieee754/dbl-64/s_fma.c:152:15: error: FE_TOWARDZERO undeclared (first use in this function)./sysdeps/ieee754/dbl-64/s_fma.c:152:15: note: each undeclared identifier is reported only once for each function it appears in./sysdeps/ieee754/dbl-64/s_fma.c:159:36: error: FE_INEXACT undeclared (first use in the function)+-+解决方法:$ cd $PRJROOT/build-tools/build-glibc$ vi ./glibc-2.13/sysdeps/ieee754/dbl-64/s_fma.c找到如下行:#include 在其下添加:#define FE_TOWARDZERO 0xc00000#define FE_INEXACT 16方法来源:./glibc-2.13/ports/sysdeps/arm/eabi/bits/fenv.h#错误:+-+./sysdeps/ieee754/dbl-64/s_fmaf.c:39:15: error: FE_TOWARDZERO undeclared (first use in this function)./sysdeps/ieee754/dbl-64/s_fmaf.c:39:15: note: each undeclared identifier is reported only once for each function it appears in./sysdeps/ieee754/dbl-64/s_fmaf.c:43:39: error: FE_INEXACT undeclared (first use in the function)+-+解决方法:$ cd $PRJROOT/build-tools/build-glibc$ vi ./glibc-2.13/sysdeps/ieee754/dbl-64/s_fmaf.c找到如下行:#include 在其下添加:#define FE_TOWARDZERO 0xc00000#define FE_INEXACT 16方法来源:./glibc-2.13/ports/sysdeps/arm/eabi/bits/fe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 23436-2025汽车风窗玻璃清洗液
- GB/T 7816-2025工业黄磷
- GB/T 26723-2025冷轧钛带卷
- JJF 2320-2025用水产品水效标识计量专项监督检查工作规范总则
- 2025春季内蒙古包头市中心医院引进高层次和紧缺急需人才招聘29人考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025年疾病预防控制及防疫服务项目发展计划
- 广本安全驾驶培训北京课件
- 2025年4月杭州市采荷中学编外教师招聘3人考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025年嘉兴海宁市中心医院公开招聘高层次急需卫技人员4人考前自测高频考点模拟试题及完整答案详解1套
- 2025年河北唐山市丰润区选聘第二批事业编制医疗技术人员13名考前自测高频考点模拟试题附答案详解(完整版)
- 公司收取管理费协议书范本
- JTS-165-6-2008滚装码头设计规范-PDF解密
- 设备维修与保养(课件)
- 《电力行业数字化审计平台功能构件与技术要求》
- 医院培训课件:《和谐医患关系的建构与医疗纠纷的应对》
- 《肺癌基础知识课件》
- 水泥行业发展的现状分析
- 会计继续教育《政府会计准则制度》专题题库及答案
- 安全生产应急处置卡模板(常见事故)
- 学校食堂食材配送服务方案(肉类、粮油米面、蔬菜水果类)
- 高级钳工培训计划
评论
0/150
提交评论