用arm-linux-gcc.4.3.2交叉编译器编译linux-3.0.1内核

合集下载

实验3-4 交叉编译工具arm-linux-gcc的制作

实验3-4 交叉编译工具arm-linux-gcc的制作

实验3-4 交叉编译工具arm-linux-gcc的制作【实验目的】掌握交叉编译工具arm-linux-gcc制作.掌握交叉编译工具arm-linux-gcc测试.【实验步骤】第一步:准备工具包(工具包在相应的实验代码目录下)crosstool-0.43.tar.gzbinutils-2.16.1.tar.bz2gcc-4.0.2.tar.gzglibc-2.3.6.tar.gzglibc-linuxthreads-2.3.6.tar.gzlinux-2.6.26.tar.gzlinux-libc-headers-2.6.12.0.tar.bz2第二步:在登录的用户目录(假定用户名是:james)下面建立cross目录【不要以root 用户登录】mkdir /home/james/downloads第三步:将crosstool-0.43.tar.gz 复制到downloads目录并减压cp crosstool-0.43.tar.gz /home/james/downloadscd /home/james/downloadstar -zxvf crosstool-0.43.tar.gz第四步:将其他文件一起复制到downloads目录下第五步:进入crosstool-0.43目录对相关文件进行修改【1】修改arm.datKERNELCONFIG=`pwd`/arm.configTARGET=arm-linuxTARGET_CFLAGS="-O"【2】修改demo-arm.sh:#!/bin/sh# This script has one line for each known working toolchain# for this architecture. Uncomment the one you want.# Generated by generate-demo.pl from buildlogs/all.dats.txtTARBALLS_DIR=/home/james/downloads#下载的源码包存放的路径RESULT_TOP=/home/james/crosstool #交叉编译工具来链安装的路径export TARBALLS_DIR RESULT_TOPGCC_LANGUAGES="c,c++"export GCC_LANGUAGES# Really, you should do the mkdir before running this,# and chown /opt/crosstool to yourself so you don't need to run as root.mkdir -p $RESULT_TOP#eval `cat arm.dat gcc-2.95.3-glibc-2.1.3.dat` sh all.sh --notest#eval `cat arm.dat gcc-2.95.3-glibc-2.2.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-2.95.3-glibc-2.2.5.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.3.6-glibc-2.2.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.4.5-glibc-2.2.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest#eval `cat arm.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.0.2-glibc-2.2.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.1.0-glibc-2.2.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest#eval `cat arm.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest #注释eval `cat arm.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notestt #添加此行echo Done.【3】修改gcc-4.0.2-glibc-2.3.6.datBINUTILS_DIR=binutils-2.16.1GCC_DIR=gcc-4.0.2GLIBC_DIR=glibc-2.3.6LINUX_DIR=linux-2.6.26LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6第六步:执行./demo-arm.sh,大约1个小时左右在/home/james/crosstool 将生成我们需要的交叉编译工具。

基于Qt的汽车车速仪表盘的设计

基于Qt的汽车车速仪表盘的设计

研究生课程论文基于Qt的汽车车速仪表盘的设计学院:信息工程学院专业:交通信息工程及控制课程:嵌入式系统及应用姓名:学号:授课教师:一研究背景仪表作为汽车整个系统中十分重要的部分,是提高汽车综合性能的重要方面之一。

随着计算机软硬件技术、总线技术、电子技术等的快速发展,控制系统臃肿、接线布线复杂、占用空间大的传统电磁机械仪表渐渐被淘汰,虚拟仪表正以传统机械仪表无法比拟的速度迅猛发展。

目前虚拟仪表通常包括纯数字仪表和虚拟仪表盘仪表两种:纯数字仪表成本较低,但功能和界面比较简单,满足不了一般驾驶员的需求;而现有的虚拟仪表盘仪表虽然功能和界面比较丰富,但又存在着开发成本高、可移植性和可重绘性差、可扩展性不足等缺点,不利于大范围的推广与应用。

针对传统仪表和现有仪表存在的不足,本文提出了一种新型的车载虚拟仪表设计方案,采用ARM处理器S3C6410为核心的硬件平台和以嵌入式Linux系统为核心的软件平台,并在此基础上采用开放源代码的图形界面库QT开发仪表终端应用程序。

该虚拟仪表可读性好,读数精度高,在可移植性、可维护性和成本方面都得到了良好的改善,具有较大的科研价值和商业使用价值。

本文目前只实现了仪表中关于车速的终端应用程序。

二开发环境2.1 Ubuntu与Qt简介Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。

Ubuntu 拥有很多优点。

相对于其他版本的Linux,Ubuntu也有着自己的优势。

首先,安装系统非常简单,只需要非常少的设置即可,完全可以和Windows桌面系统相媲美;其次,图形界面很人性化,模仿了在xp下常用的快捷键;还有,安装和升级程序时,可以通过网络,由系统自行安装依赖的文件包,从此不必再为Linux系统的依赖关系大伤脑筋。

Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

Armlinux交叉编译

Armlinux交叉编译

Armlinux交叉编译1、编译C++程序,链接是需要添加 -lstdc++g++和gcc本质一样的,本质上还是gcc,我们实验室所有的c++程序都是用gcc编译的,一般的程序用gcc足够了。

对于C++ 程序,编译的时候用gcc 或者g++ 都可以。

但是在进行连接的时候最好用g++,因为用g++ 会自动进行C++ 标准库的连接;用gcc 连接C++ 程序也可以,但是需要人为指定连接C++ 标准库,否则就会出现 undefined reference to `__gxx_personality_v/0' 之类的错误。

可见-lstdc++ 所对应的是标准C++库。

2、linux OpenCV 静态链接错误,链接是需要添加–ldlundefined reference to `dlopen'undefined reference to `dlerror'undefined reference to `dlsym'对dlopen, dlerror, dlsym 未定义的引用,缺少链接库,链接时加上选项-ldl3、对icvPuts, icvGets, gzputs, gzgets, gzopen, gzclose 未定义的引用,编译错误如下./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvPuts(CvFileStorage*, char const*)':persistence.cpp:(.text._ZL7icvPutsP13CvFileStoragePKc+ 0x20): undefined reference to`gzputs'./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvGets(CvFileStorage*, char*, int)':persistence.cpp:(.text._ZL7icvGetsP13CvFileStoragePci+0x26 ): undefined reference to`gzgets'./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function缺少zlib库引起的,编译链接时加上-lz4、如何在configure时,将编译参数传入,改变默认的编译器gcc成arm-linux编译器按照INSTALL中的介绍,也是常用的方法,在configure的时候,加上–host=arm-linux,结果没有实现我们要的效果,没有将编译器从默认的gcc改成arm-linux-gcc,编译器还是用的默认的gcc。

ARM-Linux交叉编译步骤

ARM-Linux交叉编译步骤

samba事先安装sudo apt-get install nfs-kernel-server交叉编译步骤1、创建目录s3c2440_recover2、设置网络文件系统的根目录配置文件/etc/exports在最后一行添加s3c2440_recover的绝对路径*(rw,sync,no_root_squash)重启nfssudo /etc/init.d/nfs-kernel-server restart3、arm开发板启动Bootloader 引导加载程序Kernel uImageFilesystemBootloader -》把内核的uImge加载到内存uImage 加载filesystem =》shell 用户空间4、编译器arm-linux-gcc-4.3.2.tar.gzsudo tar zxvf xxx.tar.gz -C /编译自动会解压到/usr/local/arm设置编译器脚本(自己创建),每次打开终端,若要使用arm编译器,则先source一下arm-compile.sh ()#!/bin/bashexport PA TH=$PATH:/usr/local/arm/4.3.2/bin############### 告诉系统编译器的路径(通过在PATH环境变量中添加)修改脚本可执行权限chmod u+x arm-compile.shsource arm-compile.sh4、Uboot 编译分别解压源码uboot-1.2-utu2440.tar.bz2按照uboot编译.txt5、内核编译准备工具修改过的内核源码Linux2.6.24_utu2440.tar.gz拷贝到crosscompile目录下解压tar zxvf linux inux2.6.24_utu2440.tar.gz制作镜像文件工具mkimage拷贝到/usr/sbin 或者/usr/bin 目录下参考脚本hw-kernel编译.txt内核编译时,会根据.config 的配置文件进行文件编译(即选择哪些模块,卸载哪些模块)Make menuconfig 就是一个图形裁剪的配置工具,操作结果会自动保存到.config操作步骤参hw-kernel编译.txt6 . Busybox 创建yaffs文件系统准备工具busybox-1.19.2.tar.bz2mkyaffsimage除开uboot、kernel之外的脚本文件第一个脚本mkroot.sh是用来创建根目录下的子目录的6.1 在某个目录下执行./mkroot.sh这时,会在当前路径下生成rootfs 目录及其子目录进入rootfs/dev 下创建console null操作如下:$cd rootfs/dev/$ su口令:# mknod -m 600 console c 5 1;mknod -m 666 null c 1 3;exit退出rootfs目录cd ../../6.2 解压busybox.1.19.2.tar.bz2$ cd busybox.1.19.2修改Makefile文件Gedit Makefile在164行CROSS_COMPILE ?=改为CROSS_COMPILE ?= arm-linux-make menuconfig设置交叉编译器的路径设置编译输出路径,即make install会把编译生成的东西放到指定路径配置menuconfigBusybox Settings --->//设置静态编译方式或者动态链接Busybox Settings ---> Build Options ---> [] Build BusyBox as a static binary (no shared libs)(/usr/local/arm/4.3.2/bin) cross compiler prefix[*] Build with Large File Support (for accessing files > 2 GB)Busybox Settings ---> Install Options ---> 中输入建立根文件系统的文件所在的路径busybox install prefix即rootfs的绝对路径makemake install备注:6.3 6.4让学生做总有问题,因为这两步其实是配置etc和lib故为了方便,已经都做好了,放在build/busybox目录下,直接拷贝到rootfs下即可6.3 配置rootfs下的文件信息修改和创建必要的文件cp -a busybox.1.19.2/examples/bootfloppy/etc/* rootfs/etccd rootfs/etc增加为SHELL导入全局变量的文件/etc/profilegedit etc/profile增加初始化文件gedit etc/inittabgedit etc/fstab增加初始化脚本gedit etc/init.d/rcS在etc下创建文件mdev.conftouch medev.conf6.4 动态链接库当前路径rootfs/libcp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/* ./当前路径rootfs/usr/libcp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libstdc++* ./当前路径:rootfs的上一级目录sudo mv mkyaffsimage /usr/bin/mkyaffsimage rootfs filesystem.yaffs6.5 sudo cp filesystem.yaffs /srv/tftp在CRT中run install-filesystem注意:要用arm-linux-gcc-4.3.2 编译出来的u-boot.bin uImage filesysetm.yaffs7 在arm上执行应用程序写个简单的hello world程序arm-linux-gcc hello.c -o armhello把armhello复制到s3c2440_recover 下启动开发板登陆到shell界面后(在CRT中进行操作)将虚拟机里的目录s3c2440_recover目录,通过NFS挂载到开发板的/mnt下mount -t nfs -o nolock 192.168.1.200:/home/guoji/share/crosscompile/s3c2440_recover /mnt 此时,在开发板下的/mnte下即可看到armhello将armhello拷贝到/home目录下,并执行./armhello。

linux arm交叉编译程序步骤

linux arm交叉编译程序步骤

linux arm交叉编译程序步骤下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!在嵌入式系统开发中,使用ARM架构是非常常见的选择。

arm-linux-gcc 4.3.2编译安装过程

arm-linux-gcc 4.3.2编译安装过程

arm-linux-gcc 4.3.2编译安装过程收藏arm-linux-gcc 4.3.2编译安装过程本文由《我的arm-gcc工具编译安装过程》修正而成,红字部分为与原作不同之处,希望对大家有所帮助。

原文地址:/blog/static/28351497200902193223687/我的编译环境是在ubuntu8.10 amd64,gcc版本为4.3.2,编译的linux内核版本为2.6.8,故后面需要修改少许内核头文件。

开始前确认环境里有texinfo, gawk(注意mawk编译glibc header时会有问题), bison, flex,没有就安装它们。

>sudo apt-get install texinfo gawk bison flex工作的目录是用户目录下源文件放在目录cross_source里编译的工作目录是cross_buildxxx 就是存放解压出来的源代码,例如binutils-2.19.tar.bz2,解压放在binutils-2.19 xxx_build 用于编译的目录,例如binutils-2.19.tar.bz2,编译目录是binutils-2.19_build用到的文件是binutils-2.19.tar.bz2gcc-core-4.3.2.tar.bz2gcc-g++-4.3.2.tar.bz2mpfr-2.3.2.tar.bz2gmp-4.2.4.tar.bz2linux-2.6.28.tar.bz2glibc-ports-2.7.tar.bz2glibc-2.7.tar.bz2首先创建目录>mkdir cross_source>mkdir cross_build>cd cross_build1编译,安装binutilsbinutils的配置和编译安装,binutils的编译一般不会遇到什么问题,至少我没有遇到。

>sudo apt-get install texinfo>tar -jxvf ../cross_source/binutils-2.19.tar.bz2根据[Bug gas/7026] New: ARM target wont build, error: format not a string literal and no format arguments,修改tc-arm.c>mkdir binutils-2.19_build>cd binutils-2.19_build>../binutils-2.19/configure --target=arm-linux --prefix=/usr/local/arm/4.3.2 >make>sudo make all install这就会把binutils的编译结果安装到/usr/local/arm/4.3.2/里binutils安装后需要把路径导出。

arm-linux-gcc-4.4.1+Linux-2.6.31.6+busybox-1.15.1在TQ2440的移植

arm-linux-gcc-4.4.1+Linux-2.6.31.6+busybox-1.15.1在TQ2440的移植

针对最新的交叉编译环境和最新的Linux内核以及最新的busybox,我用最新的交叉编译器arm-linux-gcc-4.4.1编译且移植linux-2.6.31.6和busybox-1.15.1到TQ2440开发板上。

使用的u-boot是天嵌光盘中带的u-boot-1.1.6,但是我把其中的s3c2440的机器码修改为默认值,即:362,这样就不用修改Linux内核中的s3c2440的机器码了。

下面是具体的移植步骤(今天我只移植了NAND、RTC、SD卡和DM9000,明天接着移植其他部分):移植Linux-2.6.31.6到24401。

从下载目前Linux最新源代码包,linux-2.6.31.6.tar.bz22。

解压缩linux-2.6.31.6.tar.bz2到指定的目录下,如:kernel/目录下;3。

进入kernel目录(#cd kernel);4。

修改系统时钟。

Linux内核默认系统时钟为16MHz,我的板子使用的时钟是12MHz的,因此需要调整系统时钟参数。

打开文件arch/arm/mach-s3c2440/mach-smdk2440.c,修改smdk2440_map_io()函数中的s3c24xx_init_clocks()中的参数为12000000;5。

添加NAND分区表到内核。

1)#vim arch/arm/plat-s3c24xx/common-smdk.c;2)修改结构smdk_default_nand_part,添加自己的分区表信息。

如下是我的分区表:static struct mtd_partition smdk_default_nand_part[] = {[0] = {.name = "bootloader",.size = 0x00040000,.offset = 0x0,},[1] = {.name = "kernel",.size = 0x00200000,.offset = 0x00200000,},[2] = {.name = "yaffs2",.size = 0x0FB80000,.offset = 0x00400000,}}3)在内核配置选项中,选择Device Drivers->MTD support->NAND Device Support->NAND Flash support for Samsung S3C SoCs和Samsung S3C NAND Hardware ECC;同时需要在MTD support中选择MTD partitioning support(支持分区)、Command line partition table parsing、Direct char device access to MTD devices和Caching block device access to MTD devices。

ubuntu10.04安装交叉编译器arm-linux-gcc-4.3.2

ubuntu10.04安装交叉编译器arm-linux-gcc-4.3.2

这次安装交叉编译器没费什么劲。

1.先将arm-linux-gcc-4.3.2.tgz的安装包复制到ubuntu10.04任意目录中。

用直接在root用户下tar -zxvf arm-linux-gcc-4.3.2.tgz解压到当前目录下。

2.安装标准C开发环境,apt-get install build-essential libncurses5-dev3.添加环境变量gedit~/.profile。

在这个文件最后添加上自己的环境变量:export PATH=$PATH:/home/usr/local/arm/4.3.2/bin4.然后在终端执行source~/.profile ,即可立即生效5.执行arm-linux-gcc-v查看编译器版本Using built-in specs.Target:arm-none-linux-gnueabiConfigured with:/scratch/julian/lite-respin/linux/src/gcc-4.3/configure--build=i686-pc-linux-gnu --host=i686-pc-linux-gnu--target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap--disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld--enable-languages=c,c++ --enable-shared --enable-symvers=gnu--enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2008q3-72'--with-bugurl=https:--with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc--with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/libc--with-gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr--with-mpfr=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp--enable-poison-system-directories--with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin--with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/binThread model:posixgcc version4.3.2 (Sourcery G++ Lite 2008q3-72)表示安装成功。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用arm-linux-gcc.4.3.2交叉编译器编译linux-3.0.1内核
1.我这里的内核是forlinx 的FORLINX_linux-3.0.1.tar.gz内核,把这个文件准备好(拷贝到linux os 的forlinx文件夹下面),这个文件不小117M,用xftp花费了我20秒时间。

2.然后解压缩命令tar zxf FORLINX_linux-
3.0.1.tar.gz,
 这里我看出来了已经解压缩成功了
 在编译内核之前,我先安装一个工具可能会用到,那就是libncurses5方便使用make menuconfig 命令,执行命令即可:apt-get install libncurses5-dev
 下面就是编译内核过程了,之前见别人编译的时间挺长的,我倒要看看需要多少时间。

 执行命令make zImage即可
 结果生成zImage的话就成功了,检查如下:
 看了一下时间也就20多分钟,还可以哈最后去我的工作目录下的arm中的arch的arm的boot中查看以下:
 嗯确实有了
 tips:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

相关文档
最新文档