最近开始接触嵌入式,作为入门的第一步,总结了一下交叉编译环境的搭建:
第一步:首先得在虚拟机下安装ubuntu系统,下载更新源 $ sudo gedit /etc/apt/sources.list将mirror里面的更新源地址全部替换掉原来的,然后让再输入 $sudo aptitude update正式更新
第二步:$sudo apt-get install build-essential 下载编译工具
第三步:安装增强功能 (启用root用户($sudo passwd root )连续输入两次密码------再次,输入su  就可以进入超级管理员模式了,最后,$ cd  /media/cdrom
    ./VBoxLinuxAdditions-x86.run)
第四步:需要安装 $sudo apt-get install nautilus-gksu才能以管理员的身份进入root文件夹
第五步:virtualbox开启usb功能的步骤(以后虚拟机可以直接检测USB了)
1.修改为usb设备增加普通用户权限
1.1 增加一个名为usbfs的用户组
$ sudo groupadd usbfs
1.2 增加当前用户到工作组
$ sudo adduser weijia usbfs  //其中weijia本人系统的登录名字
1.3 得到usbfs组的id
执行如下命令
代码:
$ cat /etc/group | grep usbfs
usbfs:x:1002:weijia,root
其中1002就是usbfs组的id了。
1.4 修改 /etc/fstab 文件
$ sudo vi /etc/fstab
在文件的末尾增加一行
none /proc/bus/usb usbfs devgid=1002,devmode=664 0 0其中 devgid=1002,其中的1002就是刚才的usbfs的组id
第六步:安装交叉编译工具(我用的是cross-2.95.3.tar.bz2)
1.进入目录 /usr/local/
2.新建一个目录arm
3.将cross-2.95.3.tar.bz2拷贝到arm文件夹里面
4.在解压缩以前需要释放文件的权限
4.1在终端下输入$sudo chmod 777 /usr
4.2在终端下输入 $sudo chmod 777 /usr/local
4.3在终端下输入 $sudo chmod 777 /usr/local/arm
5.在做好以上工作以后,我们可以进行解压缩了
5.1首先进入该文件夹$sudo cd /usr/local/arm
5.2其次,$sudo tar xjvf cross-2.95.3.tar.bz2
5.3然后,在/ertc下找到profile这个文件,在文件的最后加入export PATH=$PATH:/usr/local/arm/2.95.3/bin,增加环境变量,作用就是在编译代码的时候可以按照此路径去找到交叉编译的工具
5.4更新$source /etc/profile
5.5可以用$echo $PATH l来检测安装是否成功
5.6最后,输入$arm-linux-gcc  -v来检测,会出现以下信息
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /scratch/julian/lite-respin/linux/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2008q3-72' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/libc --with-gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin
Thread model: posix
gcc version 2.95.3(Sourcery G++ Lite 2008q3-72)
第七步:安装minicom
7.1下载minicom  $ sudo apt-get install minicom
7.2$终端输入$minicom -s就可以设置了(包括使用的串口号,波特率)
第八步:安装TFTP
8.1安装tftp的服务端和客户端:
$ sudo apt-get install tftpd-hpa ;安装tftp服务端
 $sudo apt-get install tftp-hpa   ;安装tftp客户端
8.2安装xinetd   $sudo apt-get install xinetd
8.3安装完 xinetd应该会建立目录/etc/xinetd.d,在此目录中添加文件:tftpd
$ sudo touch tftpd
8.4 打开刚新建的tftpd文件 $sudo gedit /etc/xinetd.d/tftpd,在里面添加以下内容
ervice tftp
{
disable = no
socket_type = dgram
wait = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s /opt/friendlyARM/root_tftp
log_on_success = PID HOST DURATION
log_on_failure = HOST

注意:/opt/friendlyARM/root_tftp这个目录是属于你自己的根目录,以后用于放tftp传输的文件
8.5最后释放权限:$sudo chmod 777 /etc/xinetd.d/tftpd
8.6打开inetd.conf 注释掉内容(在linux中用#表示注释):
$sudo gedit  /etc/inetd.conf
#tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
8.7重新启动服务:
$sudo /etc/init.d/openbsd-inetd restart
$sudo in.tftpd -l /srv/tftpboot
8.8查看tftp服务有没有开启
$netstat -au
第九步:开启NFS(网络文件传输)
9.1防火墙的关闭:$sudo ufw disable      ( 启动时自动关闭)
9.2安装NFS
Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
$sudo apt-get install nfs-kernel-server
安装nfs-kernel-server时,apt会自动安装nfs-common和portmap.这样,宿主机就相当于NFS Server
9.3配 置/etc/hosts.allow(打开这个文件,在后面加上以下内容)
### NFS DAEMONS
portmap: 192.168.0.
lockd: 192.168.1.
rquotad: 192.168.0.
mountd: 192.168.0.
statd: 192.168.0.
注释:以上的IP地址需要根据你自己的主板的IP地址来修改(我的是192.168.0.210)
9.4. 需要重启才能更新
9.5配置/etc/exports(安装完nfs-kernel-server之后会有exports这个文件夹)
在该文件末尾添加下列语句:
/opt/FriendlyARM/root_nfs *(rw,sync,no_root_squash)
 
/opt/FriendlyARM/root_nfs 为我们预设的实现本机与系统板文件同步的目录
*处应填IP地址段,仅一个*为意为任意IP均可
rw:表示允许系统板读写该目录
sync:数据同步写入内存和硬盘
no_root_squash表示允许系统板以主机root用户身份挂载根文件系统
第十步:测试
10.1用minicom登录主板
10.2ping 虚拟机IP地址(需要设为同一个网段,然后连接的方式为桥接)
如果通了,则可以挂载了
10.3mount -t nfs 192.168.1.132:/opt/FriendlyARM/root_nfs  /mnt(其中192.168.0.132是虚拟机的IP地址)如果挂载成功,可以在/mnt目录下看到:/opt/FriendlyARM/root_nfs  文件夹下的内容
 
 
注明:以上内容只是个人的总结,会有错误希望指出