您的位置:首页 > 运维架构 > Linux

Linux软件开发相关的编译工具

2014-01-02 11:14 369 查看


来自《ARMLinux开发-2G/3G无线传输(DTU)和路由器—笔记》 www.warewin.com

交叉编译器的安装

交叉编译器需要安装在PC的linux环境下。交叉编译工具可编译UBOOT,LINUX内核,BUSYBOX,应用程序等。

1、编译器版本

    arm-linux-gcc-4.2.3

2、下载源码:

     到该网站下载源码文件:http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/

选择arm处理器,Downloadthe GNU/LINUX Release。需要注册,填写注册信息后下载链接会发送到注册邮箱中。

    点击下载连接后,选择IA32 GNU/LINUX TAR版本,选择Sourcery G++ Lite 2008q1-126for ARM GNU/LINUX。

3、解压缩

      将下载的压缩包SourceryG++ Lite 2008q1-126 for ARM GNU/Linux 拷贝到主机的/usr/local/arm目录下,然后在终端中进入该目录,解压缩文件,完成后会在该目录下生成arm-2008q1文件夹。

在arm-2008q1文件夹中含有交叉编译执行程序,和基础类库。

4、添加环境变量

    编辑系统的/etc/bashrc 文件,在最后增加路径export PATH=/usr/local/arm/arm-linux/arm-2008q1/bin:$PATH,在终端中使用#echo $PATH命令来查看环境变量中是否有/usr/local/arm/arm-linux/arm-2008q1/bin这个路径变量。

5、测试

(1)建立软连接:

#cd /usr/local/arm/arm-linux/arm-2008q1/bin

    #ln -s arm-none-linux-gnueabi-gccarm-linux-gcc

(2)查看编译器版本

#arm-linux-gcc –v

    查看显示版本信息是否为:gcc version 4.2.3(Sourcery G++ Lite 2008q1-126)

Bootstrap的编译

编译环境:windows

版本:Bootstrap-v1.15

编译工具:WINARM

步骤:

1、下载安装WinARM编译工具(winarm.rar文件)并解压缩winarm.rar。

2、将解压后的winarm目录拷贝到某一目录下,如D盘。

3、向windows主机中path变量中添加D:\WinARM\bin和D:\WinARM\utils\bin目录,以半角分号(;)隔开。

4、准备Bootstrap-v1.15源文件存放在D盘。

5、编译bootstrap程序

点击开始->运行->输入cmd,进入DOS命令行窗口。

(1)编译dataflash_at91sam9260ek.bin

编译dataflash中的bootstrap,进入\Bootstrap-v1.15\board\at91sam9260ek\dataflash目录,输入make命令,编译完成后在当前目录下生成dandflash_at91sam9260ek.Bin文件。

>d:

>cd bootstrap\board\at91sam9260ek\dataflash

>make

说明:在该目录下的at91sam9260ek.h中

#define AT91C_SPI_PCS_DATAFLASHAT91C_SPI_PCS0_DATAFLASH(表示dataflash的片选接SPI0_NPCS0)

#define IMG_ADDRESS 0x8000(表示用户代码的下载地址)

在makefile文件中,CROSS_COMPILE=arm-elf-(表示选择winarm编译器)

(2)编译nandflash_at91sam9260ek.bin

编译nandflash中的bootstrap,进入\Bootstrap-v1.15\board\at91sam9260ek\nandflash目录,输入make命令,编译完成后在当前目录下生成nandflash_at91sam9260ek.Bin文件。

>d:

>cd bootstrap\board\at91sam9260ek\nandflash

>make

说明:在该目录下的at91sam9260ek.h中

#define IMG_ADDRESS 0x20000(表示用户代码的下载地址)

在makefile文件中,CROSS_COMPILE=arm-elf-(表示选择winarm编译器)

编译成功后如下图所示:

图2.6 bootstrap编译过程图

Uboot的编译

U-boot版本:u-boot-1.3.4

1、修改Makefile 文件

在/u-boot-1.3.4/Makefile文件中修改CROSS_COMPILE编译器值:

ifeq ($(ARCH),arm)

CROSS_COMPILE = arm-linux-

endif

修改为CROSS_COMPILE=arm-linux-。

2、清除原来的编译

#cd u-boot-1.3.4

#make distclean

3、配置使用nandflash

#makeat91sam9260ek_nandflash_config

4、编译

#make

编译后会在/u-boot-1.3.4/目录下生成u-boot.bin文件,下载此文件到设备上并查看运行系统是否正常。

Busybox的编译

1、Busybox版本:busybox-1.12.1

2、修改makefile文件:

    #cd busybox-1.12.1

编辑/busybox-1.12.1/Makefile文件中以下两个值:

ARCH            ?=arm

CROSS_COMPILE   ?=arm-linux-

3、配置菜单

# makemenuconfig

进入配置菜单配置所需选项,输入“Y”即选中、“N”为不选中,主菜单如下图所示:

图2.7 busybox配置菜单图
配置完所需选项后,选择<Exit>退出本级菜单,在退出主菜单后会提示是否保存新的配置,选择<Yes>,如下图所示:

图2.8 busybox配置菜单保存图
4、编译

# make

编译成功后会在当前目录下生成的busybox可执行文件。

Linux内核的编译

内核版本:linux-2.6.36

1、修改编译器

修改/linux-2.6.36/Makefile文件中ARCH和CROSS_COMPILE值,如下所示:

ARCH            ?=arm

CROSS_COMPILE   ?=arm-linux-(或者系统所安装的ARM-Linux-gcc的编译器绝对路径)

2、配置菜单

# cd  linux-2.6.36

# make menuconfig

进入配置菜单配置所需选项,输入“Y”即选中、“N”为不选中,主菜单如下图所示:

图2.9 内核配置菜单图
配置完所需选项后,选择<Exit>,退出会提示是否保存新的配置,选择<Yes>,如下图所示:

图2.10 内核配置菜单保存图
在配置结束后会该目录下生成一个.config文件。

3、编译

#make clean  //清除原有的编译

# make uImage //make命令默认生成image和zImage

编译完成后会在/linux-2.6.36/arch/arm/boot/下生成linux 内核压缩映像uImage文件,将此文件下载ARM设备即可。

使用uImage命令需要使用mkimage工具,需将mkimage工具拷贝到主机的/usr/sbin目录下,然后再编译内核。

注:uImage命令编译内核,原因如下:

内核镜象有两种zImage以及uImage。其中zImage下载到目标板中后,可以直接用uboot的命令go来进行直接跳转。这时候内核直接解压启动。但是无法挂载文件系统,因为go命令没有将内核需要的相关的启动参数传递给内核。传递启动参数我们必须使用命令bootm来进行跳转。Bootm命令跳转只处理uImage的镜象。

mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体系结构的,哪个OS的,哪种类型,加载内存中的哪个位置,入口点在内存的那个位置以及映象名是什么。

应用程序编译

1、编译一个源程序

    例如:使用arm-linux-gcc编译当前目录下的hello.c文件为可执行程序,如以下所示:

#arm-linux-gcc-o hello hello.c

编译完成后会生成hello可执行文件,将此文件放到ARM设备中运行即可。

2、编译多个源程序

可将所有需要编译的应用程序分类整理放到一个项目中,然后按编译规则编写makefile文件,实现所有应用程序“自动化编译”。

最后,执行#make 命令即可
4000
编译整个项目下的源程序。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  交叉编译 linux DTU GPRS
相关文章推荐