现在的位置: 首页 > 综合 > 正文

在Debian里建立交叉编译环境(cross-compiler)

2013年10月01日 ⁄ 综合 ⁄ 共 2178字 ⁄ 字号 评论关闭

 嵌入式开发很重要的一步就是建立自己的交叉编译环境,也就是在宿主机器上编译生成目标机器上的执行代码。比如在i386机器上装有
Linux操作系统,在ARM板子上装着嵌入式系统,比如Linux;要在板子上做应用程序开发,则现在宿主机器上(这里就是i386机器)上编辑,编译,链结,生成目标代码,然后下载到目标机器上执行。其中需要编译器在i386机器上运行,而生成的代码在arm机器上执行,就是交叉编译。
        而编译需要头文件的支持,函数库的支持。而编译器本身也需要其他程序的支持。这一整套程序工具构成一个ToolChain。典型的ToolChain

包括binutils,gcc,gdb,glibc.从头到尾建立这一套工具非常烦琐和复杂,因此有很多现成的套件可用。一般的开发板附带的光盘上就有作好的ToolChain安装文件。也有一些开源项目支持ToolChain。比如:

        http://www.kegel.com/crosstool/                                                      http://tree.celinuxforum.org/CelfPubWiki/ToolChain
        http://www.emdebian.org/tools/crossdev.html
        http://www.codesourcery.com/gnu_toolchains/arm/faq.html
        http://www.linux-mips.org/wiki/Toolchains#Pre-built.2FBuild_Kits
    Debian里面也有做好的ToolChain安装包,并起Debian为ToolChain特别准备了一些实用工具.
    首先使用
        apt-get install toolchain-source*
    安装用于编译生成ToolChain的源代码包。安装之后,在   /usr/src/toolchain下面有
        binutils-2.15.tar.bz2  gcc-3.4.3.tar.bz2  gdb-6.1.tar.bz2   
        gpc-20040516.tar.gz  newlib.tar.bz2 scripts template.tgz

       binutils.tar.bz2 gcc.tar.bz2 gdb.tar.bz2 newlib-1.12.0.tar.bz2            patches template-gcc.tgz
    可以查看/usr/share/doc/toolchain-source目录下面的HOWTO,有安装的详细说明文档。
    接下来,你需要建立一个临时目录,比如

        mkdir /test/cross
        cd /test/cross
        tpkg-make arm-linux
    这里的arm可以是其他平台,可以看tpkg-make的说明。这个命令的结果是在当前目录生成三个目录来放置源代码,

    它们是            "binutils-arm-xxx,gcc-arm-xx, gdb-arm-xxx"。
    然后, 

    cd /test/cross/binutils-arm-***
    debuild (../ 生成deb包)
    debi (安装刚生成的包)

    cd /test/cross/gcc-arm-***
    debuild
    debi
    记住这个顺序不能颠倒,因为gcc需要binutils的支持。
    如果你运气好,能够一口气完成,真是上天照顾你!一般说来会出现各种各样的问题,根本原因就是其他包的版本是不是支持或者是否存在。

    在生成gcc之前,还需要安装libc,使用如下命令:
TPKG_SEVER=ftp.de.debian.org tpkg-install-libc arm-linux

    生成binutils和gcc的debuild最后一步都是生成签名,需要使用gpg或者pgp的私钥。以gpg为例,首先使用
    gpg --gen-key

    生成一对公钥和私钥,并设置用户标识为 name (comment) <email adress>,为了正常签名,需要修改***-armm-xxx/debian/changes
里面的用户名:

    -- qiaolin (root) <qiaolinnk@eyou.com> (我的例子)

    安装完成之后,可以下载Debian提供的Hello程序来验证。
        apt-get source hello
        cd /usr/src/hello-xx
        CC=/arm-linux-gcc ./configure --host=arm-linux
        make -k
        file ./src/hello
    得到如下输出则安装成功:
    ./src/hello: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux2.2.0, dynamically linked (uses shared libs), not stripped

    ========The End===========

抱歉!评论已关闭.