经过一段时间的摸索,终于把linux下搭建基于Eclipse的arm的开发环境给搭建起来了,做下笔记,以便日后查看。
0. 用的linux版本是Ubuntu 9.04
用的板子是FriendlyARM s3c2440
1. 准备好相应的软件包:
arm-linux-gcc-3.4.1.tar.bz2(网上现成的交叉编译工具,有兴趣的话也可以自己重头编译)
地址:ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2
jdk-6u21-linux-i586.bin(其实这里jre应该也够了,装个jdk以备以后开发java程序需要)
地址:http://www.oracle.com/us/sun/index.html
eclipse-cpp-helios-linux-gtk.tar.gz
地址:http://www.eclipse.org/downloads/
2. 首先建立交叉编译环境
(1) 将arm-linux-gcc的压缩包arm-linux-gcc-2.95.3.tar.gz解压缩;eclipse-cpp-helios-linux-gtk.tar.gzeclipse-cpp-helios-linux-gtk.tar.gz
$ sudo tar vxjf arm-linux-gcc-3.4.1.tar.bz2
(2) 将路径usr/local下的arm目录拷贝到你自己系统的/usr/local下;
cd ./usr/local
$ sudo mv arm /usr/local
(3) 修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,强烈推荐使用方法一,我也不知道为啥,网上说的)
方法一:修改/etc/bash.bashrc文件
$ sudo vi /etc/bash.bashrc 在最后加上:
export PATH=$PATH:/usr/local/arm/3.4.1/bin(注意,这里的等号前后不能有空格,下同)
export PATH
方法二:修改/etc/profile文件:(经测试发现,方法二必须重新启动,使用source的话换个终端就无效了)
$ sudo vi /etc/profile 增加路径设置,在末尾添加如下:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
方法三:#export PATH=$PATH:/usr/local/arm/3.4.1/bin 注:(这只能在当前的终端下才是有效的!)
总结:在这里我们还是用第二种方式吧,第一种方式Eclipse识别不出来的 -- 2010-10-10 9:47
(4) 保存对profile的修改后,执行source /etc/bash.bashrc 就OK了,该命令能立即使新的环境变量生效,不用重启电脑;
用$ echo $PATH 检查是否将路径加入到PATH
(5) 测试是否安装成功:$ arm-linux-gcc -v
3. 安装Eclipse运行所需的jre,这里以jdk替代
(1) 安装jdk-6u21-linux-i586.bin
$ cd /usr/local/lib $ sudo cp /home/jdk-6u4-linux-i586.bin ./ $ sudo chmod +x jdk-6u4-linux-i586.bin $ sudo ./jdk-6u4-linux-i586.bin
(2) 设置环境变量
在/etc/profile中加入如下的内容:
(由上面可知这里用的是第一种方法,其实我暂时也没搞明白具体区别在哪里,姑且这样这着吧)
JAVA_HOME=/usr/local/lib/jdk1.6.0_21 JRE_HOME=/usr/local/lib/jdk1.6.0_21/jre CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME JRE_HOME CLASSPATH
(3) source /etc/profile
(4) java -version
4. 安装Eclipse
(1) 解压Eclipse
sudo tar zxvf eclipse-cpp-helios-linux-gtk.tar.gz -C /usr/local/dev
(2) 把Eclipse的编译器配置成arm-linux-gcc
解压完以后我们就能在相应的目录找到Eclipse文件了,双击打开运行。
新建一个工程以后选择工程的Properties,在弹出的页面上进行如下图设置:
加了一个名为arm的编译方式以后,将它下面GCC C Compiler和GCC C Linker的Command改成arm-linux-gcc,然后就万事OK了,你现在就可以通过Eclipse利用arm-linux-gcc来进行交叉编译了。
5.PC开启NFS与开发板链接
PC上编译好的东西必须拿到板子上才能运行,拿U盘拷来拷去好像有点不太现实,我们利用NFS挂载就可以轻松解决这个问题。
(1) 安装
在Ubuntu系统下,使用NFS需要首先安装以下NFS的软件包
服务器端 : nfs-common、nfs-kernel-server、portmap;
客户端:nfs-common、portmap;
在服务器端安装软件包的命令式:$sudo apt-get install nfs-kernel-server
(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)
目标板上的Linux系统由Linux内核和busybox共同提供对NFS的支持,不必安装其他的NFS客户端。
(2) 配置
NFS的配置文件是/etc/exports。
在该文件后面加一行:/home/xxx/workspace *(rw,no_root_squash) 使目录/home/xxx/workspace允许所有的IP以读写的权限来访问。
(3) 使用
使用之前必需开启NFS服务:$sudo /etc/init.d/nfs-kernel-server start
当然,使用之后可以关闭NFS服务:$sudo /etc/init.d/nfs-kernel-server stop
首先在Linux服务器上进行NFS服务器的回环测试,验证共享目录能否被访问。
$ mount -t nfs 192.168.1.1:/home/xxx/workspace /mnt
$ ls /mnt
启动开发板后在目标系统的Linux Shell下
$ mount -t nfs 192.168.1.1:/home/xxx/workspace /mnt/nfs -o nolock
$ ls /mnt/nfs
如果成功开发板就可以直接运行主机上的程序了。