#本人初学linux与使用开发板,所使用的是 arm tiny6410 开发板。
#以下所属个人实际操作的来,若有不妥或是不对之处,请多多指出不足之处。
#首先要明确:实现arm-linux交叉编译就得需要平台,配置平台,才能完成最终的交叉编译。
#首先要连接好arm与linux ,没有连接好怎么可以称得上交叉编译呢!?
一.这里我们先将宿主计算机打开两个终端,一个用来编译宿主计算机linux-C语言程序,一个用来挂载编译后的二进制文件,实现交叉编译。
二.配置开发板与宿主计算机平台,保证开发板与宿主计算机可以通信。
三.在宿主计算机进行编译文件,开发板挂载可执行二进制文件,进行测试。
———————————————————————————————————————————————————————————————————————
实现arm-宿主计算机连接
安装 minicom 实现开发板连接
sudo apt-get install minicom
设置 minicom 配置
sudo minicom -s
按A设置端口 如果是USB0 则 设置为 ttyUSB0;
这里有人可能会问怎么知道端口号是多少。 可以利用命令 ls /dev/ 若是存在 USB0 则可以看到 ttyUBS0
按F 将 Yes 设置为 No
接下来退出 等待一下按下回车键就可以看到连接到开发板上啦~
———————————————————————————————————————————————————————————————————————
配置ip地址,arm与宿主计算机要处于同个网段才可以进行通信
配置宿主计算机ip方式有两种,一种是短暂的,一种是永久的。
短暂的配置方式:
利用ifconfig eth0 ip地址(192.168.*.**) 这里补充下同一网段指的是 * 一致,例如我的ip设置 开发板:192.168.3.100 宿主计算机:192.168.3.101
永久的配置方式:
修改宿主计算机和开发板的静态ip
注意:切记若与同伴一起玩的话,不要有ip相同造成冲突,不然后面会出错的哦!~
设置完我们可以利用命令 ping +ip地址 测试是否成功啦~
———————————————————————————————————————————————————————————————————————
在宿主计算机安装NFS,配置NFS,建立服务器文件夹
切换到 root 权限,以免下面麻烦的命令都要添加一个sudo。(不过小编建议,前期乱搞root没什么问题,但是后期还是不要用root权限好点,不然弄错了,有可能会很纠结)
在这里说下:一般的用户是 $ 后面加命令 root权限是 # 后面加命令
# apt-get install nfs-kernel-server
这里有些人可能会问:为啥其他人安装NFS还有一个命令 # apt-get install nfs-common
我的回答是:我先装nfs-kernel-server 再安装 nfs-common 时好像是不用安装的。所以我认为前者包括后者!
# vim /etc/exports
在最后面添加/home/xxx 192.168.*.*(rw,no_root_squash,sync)
上述的xxx为自己所建的目录,当然可以改为 /home/xxx/xxx 啦!
rw 为读写权限
sync 资料同步写入内存和磁盘
no_root_squash:nfs客户端共享目录使用者的权限
# /etc/init.d/nfs-kernel-server restart
重新加载exports设置,开启NFS服务。(注:每一次进行交叉编译时都要启动)
# showmount -e
显示出设置的服务器共享的文件夹
# mkdir /home/xxx
建立文件夹
# chmod 777 /home/xxx
修改权限(共享的嘛!不开放点怎么一起用呢!)
(注:因为这里使用root权限建立的,所以后面若用一般用户在xxx中建立文件,似乎会有点问题哦!)
———————————————————————————————————————————————————————————————————————
测试NFS服务器文件夹
# touch /home/xxx/c.c
在宿主计算机建立一个c.c文件
切换到开发板终端
# mount -t nfs -o nolock 192.168.3.101:/home/xxx /mnt
此时我们可以察看下开发板终端里的/mnt里是不是有 c.c文件,有的话就成功啦!(当然是没有报错的情况下!
挂载后,记得移除挂载
# umount /mnt
记得不要在 /mnt 下使用此命令 因为会失效的!所以可以切换的根目录 cd ~ 再执行
———————————————————————————————————————————————————————————————————————
最后我们来实现一下编译吧!
首先我们要将arm-linux交叉编译的压缩包解压。
#tar -zxvf (压缩包名字) -C /
配置 PATH 环境变量
暂时性设置 # export PATH=解压缩目录一直到 /bin:$PATH 例如:export PATH=/opt/FriendslyARM/toolschain/4.5.1/bin:$PATH
永久性设置 # vim /etc/profile 在最后面加上 export PATH= “ 解压缩目录一直到 /bin:$PATH ”
接下来我们就可以利用前面的c.c文件啦!在里面编译c语言
# arm-linux-gcc c.c -o out
此时若在宿主计算机上执行就会提示二进制不可执行之类的(毕竟是ARM执行的而不是宿主主机执行的,不然也不会叫 交叉编译啦~)
切换到开发板终端
挂载目录 # mount -t nfs -o nolock 192.168.3.101:/home/xxx /mnt
挂载成功我们就可以去执行那个c.c生成的out执行文件啦!
最后记得移除挂载!