对于一个嵌入式linux新手来说,嵌入式linux开发环境的搭建是一个最基本的技能也是一个比较棘手的问题,如何学习嵌入式linux开发环境?需要虚席哪些知识?对此整理了一些嵌入式linux开发环境学习资料供大家参考。 一:一步一步搭建arm-linux交叉编译环境 要做嵌入式Linux开发,首先需要有交叉编译工具链(crosscompiling toolchain),也就是在主机(x86 PC)上可编译生成目标板可执行文件(ARM指令)的编译工具。和普通的编译工具链一样,交叉编译工具链也包括编译、链接、修改目标文件的各种程序,如gcc、glibc、ld、gas、objdump、readelf等。 使用以下版本的文件为例子建立ARM-linux交叉编译环境: binutils-2.11.gz gcc-2.95.3.gz glibc-2.2.3.gz glibc-linuxthreads-2.2.3.tar.gz linux-2.4.5.gz patch-2.4.5-rmk7.gz# linux kernel patch 我们的工作路径是: ~ -- +------- tars --+----- SourceDir | \----- BuildDir \------ armtools tars 在这里放我们的下载来的 .tar.gz 文件 SourceDir 这个临时目录放我们解压缩后的源文件 BuildDir 我们在这里编译 armtools 把arm-linux 交叉编译环境的安装在这里 安装linux 的头文件 解压缩,打补丁 cd ~/tars/SourceDir tar -zxf ../linux-2.4.5.tar.gz cd linux zcat ../../patch-2.4.5-rmk7.gz| patch -p1 修改 Makefile 建议先删除 .config 文件, 否这以后会遇到麻烦。 将Makefile中ARCH := ......改为:ARCH=arm # 执行一下 make clean 建立连接 如果是LART板子 make ARCH=arm lart_config cd include/asm-arm rm -f arch proc ln -s arch-sa1100 arch ln -s proc-armv proc 如果是clps711x的CPU cd include/asm-arm rm -f arch proc ln -s arch-clps711x arch ln -s proc-armv proc 为你自己的板子定制: make ARCH=arm menuconfig make dep 拷贝头文件 cp -dR include/linux~/armtools/arm-linux/include cp -dR include/asm-arm ~/armtools/arm-linux/include/asm 编译安装binutils 解压缩 cd ~/tars/SourceDir tar -zxf ../binutils-2.11.gz 编译 cd ~/tars/BuildDir mkdir binutils cd binutils ../../SourceDir/binutils-2.11/configure--target=arm-linux --prefix=~/armtools make all install 编译安装gcc 的c 编译器 解压缩 cd ~/tars/SourceDir tar -zxf ../gcc-2.95.3.tar.gz 修改gcc 的t-linux 文件在t-linux文件中的TARGET_LIBGCC2_CFLAGS上加上__gthr_posix_h inhibit_libc cd gcc-2.95.3/ gcc/config/arm mv t-linux t-linux-orig sed 's/TARGET_LIBGCC2_CFLAGS=/TARGET_LIBGCC2_CFLAGS = -D__gthr_posix_h -Dinhibit_libc/' < t-linux-orig> t-linux-core cp ./t-linux-core ./t-linux 编译 cd~/tars/BuildDir mkdir gcc-core cd gcc-core ../../SourceDir/gcc-2.95.3/configure \ --target=arm-linux\ --prefix=~/armtools \ --enable-languages=c \ --with-local-prefix=~/armtools/arm-linux \ --without-headers \ --with-newlib \ --disable-shared make all install 编译安装 glibc 解压缩 cd ~/tars/SourceDir tar -zxf ../glibc-2.2.3.tar.gz cd glibc-2.2.3 tar -zxf ../../glibc-linuxthreads-2.2.3.tar.gz 编译 cd ~/tars/BuildDir mkdir glibc cd glibc CC=arm-linux-gcc AR=arm-linux-arRANLIB=arm-linux-ranlib \ ../../SourceDir/glibc-2.2.3/configure\ --host=arm-linux \ --prefix=~/armtools/arm-linux \ --enable-add-ons \ --with-headers=~armtools/arm-linux/include make all install 编译安装gcc 的c, c++ 编译器 恢复t-linux 文件 cd ~/tars/BuildDir mkdir gcc cd gcc cp../../SourceDir/gcc-2.95.3/gcc/config/arm/t-linux-orig \ ../../SourceDir/gcc-2.95.3/gcc/config/arm/t-linux 编译 ../../SourceDir/gcc-2.95.3/configure \ --target=arm-linux \ --prefix=~/armtools \ --enable-languages=c,c++ \ --with-local-prefix=~armtools/arm-linux make all install 二:熟悉开发环境 1.1U-boot的基本使用方法 连接好开发板的网线和串口线,启动minicom(配置成115200 8N1,无Flow Control)。按下开发板电源,立刻按除回车以外的任意键,进入bootloader提示符AKAE2440#。如果没来及按键就已经启动了内核,可以按开发板上的RESET键重来。 注意:u-boot的终端不能处理控制字符,不要用移动光标键或翻页键等,退格键可以用。按了产生控制字符的键再输入命令就会产生错乱,这时可以按下回车输入当前这条已经错乱的命令,然后在新的提示符下重新键入命令。 输入printenv命令显示bootloader的参数。 2.将自己定制的根文件系统下载到开发板运行 “根文件系统”是一种不严格的说法,其实是指文件系统中的文件和目录,这些文件和目录构成了一个Linux系统运行所需的基本框架。ftp上的rootfs-basic.tar是根文件系统的打包,由于包含设备文件,需要root权限才能解包: ~$ sudo tar xf rootfs-basic.tar 解包后可以根据自己的需要修改其中的目录和文件,然后将根文件系统目录制作成cramfs映像再下到开发板运行,这样就达到了修改根文件系统中的目的。 首先确认你的主机上安装了软件包cramfsprogs,然后制作cramfs文件系统映像: ~$ mkcramfs~/rootfs rootfs.cramfs 然后按照前面的步骤把rootfs.cramfs下载到开发板的ext2分区,运行一下试试。 3.设置开发板的启动方式为NFSRoot 基本思想是:在主机上开NFS服务器,把主机上的~/rootfs目录导出为NFS服务目录,使开发板一启动就自动加载主机的~/rootfs目录为根文件系统,省去了下载和烧写映像的麻烦,在主机上修改根文件系统中的文件立刻在开发板的系统上生效,在开发过程中十分便利。 首先在主机上安装和配置NFS服务,确认你的主机安装了nfs-kernel-server软件包。然后修改配置文件/etc/exports,添加下面一行(注意*号后面紧跟左括号,无空格,每个逗号后面也不能有空格): /home/akaedu/rootfs *(rw,sync,no_root_squash) 这表示我们把上一节中通过解压rootfs-basic.tar得到的/home/akaedu/rootfs/目录设置为nfs服务目录。
|