因为我们需要在x86 Linux主机上编译,编译后的elf文件要运行在嵌入式开发板上,所以必须采用交叉编译环境。 我们选择的交叉开发环境是eldk,eldk可以安装在以下Linux版本中:
RedHat Linux 7.3, 8.0, 9
SuSE Linux 7.2, 7.3, 8.x
Mandrake 8.2
Slackware 8.1beta2
FreeBSD 5.0
Debian 3.0 (Woody) Gentoo Linux 1.4_rc2
安装步骤: 1. 确定\kdcserver软件备份Linuxdenxppc-linux-x86isoppc-2004-02-16.iso已经拷贝到Linux主机上,如位于/zzm/ppc-2004-02-16.iso中。
2. 将ppc-2004-02-16.iso镜像文件mount 成一个光驱: mount –o loop /zzm/ppc-2004-02-16.iso /mnt/cdrom
3. 安装860和8260的eldk。
cd /mnt/cdrom
./install –d /opt/eldk ppc_8xx ppc_82xx //注意-d指定安装目录,请指定安装目录为/opt/eldk
4. 安装完成后,设置以下两个变量:
export CROSS_COMPILE=ppc_8xx- //如果要编译860型号的路由器,否则 =ppc_82xx
PATH=$PATH:/opt/eldk/usr/bin:/opt/eldk/bin
注意:以上两个bash下的命令只能使两变量即时生效,如果要让这两个变量重新登陆或重启机器后依然存在,修改文件: ~/.bash_profile,在文件合适位置添加: PATH=$PATH:$HOME/bin::/opt/eldk/usr/bin:/opt/eldk/bin CROSS_COMPILE=ppc_8xx- export PATH CROSS_COMPILE
5. 最后用eldk提供的两个脚本分别为860和8260两个型号做一些设置,下面以860为例说明,假设eldk镜像mount 到/mnt/cdrom, eldk安装在/opt/eldk。(如果不使用eldk提供的根文件系统,以下步骤可以省略)
cd /opt/eldk/ppc_8xx/dev
/mnt/cdrom/ELDK_MAKEDEV //在dev目录下创建dev节点
cd /opt/eldk
/mnt/cdrom/ELDK_FIXOWNER //设置suid,需要管理员权限,如果安装使用是管理员账号,可以省略这步
这样,整个eldk已经安装完成,所有供860使用的交叉环境都在/opt/eldk/ppc_8xx目录中,编译单个文件的的时候可以使用以下方法:
${CROSS_COMPILE}gcc -o hello_world hello_world.c
这个命令编译出来的hello_world只能在{CROSS_COMPILE}指定的设备上运行,用file hello_world可以查看其运行平台, 用${CROSS_COMPILE}ldd 可以查看hello_world需要调用的库
如果需要编译较大的工程,需要Makefile对交叉编译环境的支持。
http://www.dianli8.net/