一、Ubuntu中安装arm-linux-gcc交叉编译器
在网上找了好多办法都没安装成功,网上大部分以及老师给的教程都是安装4.4.3版本的,我这边系统版本是64位的,但是安装之后4.4.3之后,即使安装了32位运行库,依旧报"not found"或”arm-linux-gcc不是可执行命令“。最后成功安装了64位的arm-linux-gcc交叉编译器。
步骤如下:
arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2
链接:https://pan.baidu.com/s/1iFrEWgjr16-IzELkguhVKQ?pwd=9asc
提取码:9asc
(1)首先将该文件通过U盘放到Ubuntu系统的桌面上,然后进入该文件夹内,里面是安装包,鼠标右键在终端打开,进入该目录的终端下,使用命令将该安装包解压到根目录下,注意是大写C。
sudo tar -xjvf /tmp/arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 -C /
(2)新建目录用来存放解压后的目录,
或者使用命令行创建目录,
sudo mkdir /usr/local/arm
创建目录后,输入命令释放arm目录的全部权限:
sudo chmod 777 /usr/local/arm
(3) 把最开始解压的目录放到arm目录中
cd /sudo cp -r opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4 /usr/local/arm
-r表示整个目录以及里面所有东西;
(4)为了以后可以在任何位置使用该交叉编译器,打开/etc/profile配置环境变量和库变量,
sudo gedit /etc/profile
export PATH=$PATH:/usr/local/arm/gcc-4.6.4/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-4.6.4/lib
点击右上角的保存,然后关闭;
使用source命令加载生效该配置文件
source /etc/profile
(5)接着进入“/home/用户名”目录下的“.bashrc”隐藏文件下进行同样的配置;
export PATH=$PATH:/usr/local/arm/gcc-4.6.4/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-4.6.4/lib
保存后,关闭。
(6)检查是否安装成功
arm-linux-gcc -v
出现如上图提示,则证明安装成功。
(7)使用交叉编译工具验证;
在桌面上新建一个文件夹,里面存放c文件,在文件里编写hello.c文件
touch hello.c
直接双击该文件,进行编辑,
#include<stdio.h>int main(){printf("Hello World\n");return 0;}
在该目录下打开终端,使用编译命令进行编译;
arm-linux-gcc hello.c -o Hello
使用执行命令;
./Hello
使用file Hello命令查看编译后的是不是arm的可执行文件;
file Hello
可以看到编译后的可执行文件是在32bit的arm架构上运行的。
二、安装配置网络文件系统NFS服务及目标机程序调试
(1)安装NFS
输入以下命令:
sudo apt-get updatesudo apt-get install portmapsudo apt-get install nfs-kernel-serversudo apt-get install nfs-common
如果出现以下问题,说明网络设置有问题,建议关机重启,或者将网络设置为自动。
(2)创建NFS共享目录
这里我在/mnt目录中创建,将NFS共享目录称为ShareFolder
sudo mkdir -p /mnt/ShareFolder
分配最高权限:
sudo chown nobody:nogroup /mnt/ShareFoldersudo chmod -R 777 /mnt/ShareFolder/
(3)编辑exports配置文件
首先打开文件,然后在最后一行添加:
/mnt/ShareFolder *(rw,no_root_squash)
使用下面的命令使共享文件夹启用并生效;
sudo exportfs -arv
如果没有显示共享文件夹的路径,说明前面步骤有问题。
使用下面命令查看是否可以看到共享目录:
showmount -e
Ubuntu上重启NFS服务:
sudo /etc/init.d/nfs-kernel-server restart
(4)Xshell连接arm板
将pc机用交叉网线与开发板的网络接口连接,将开发板电源接口接到插座上,打开arm板,修改网络设置为:
IP为:192.168.16.95;
子网掩码为:255.255.255.0;
默认网关为:192.168.16.1;
DNS为:192.168.16.1;
打开Xshell,
(5)修改虚拟机中Ubuntu IP地址
连接好arm板之后,应该会有以太网这个选项,如果没有,拔掉arm板重新连接,将arm板连接到虚拟机上。
点击以太网,点击设置,
再次点击设置,
修改Ipv4为手动,将ip地址修改为与开发板同一网段的并且与网关和开发板不同的任意地址,这里将ip地址设置为192.168.16.3,子网掩码与网关地址以及开发板地址相同(如上图所示)。
(6)使用ping命令·查看网络连通性;
如图所示,可以ping通,代表网络配置成功,可以连接。
(7)使用ssh连接开发板;
命令为:
ssh root@[开发板ip]
ssh root@192.168.16.95
如果报错,使用下面的命令:
ssh root@192.168.16.95 -oHostKeyAlgorithms=+ssh-dss
这边的密码为自己在Xshell中设置的连接密码。
(8)挂载共享文件夹
mkdir projectmount -t nfs 192.168.16.3:/mnt/ShareFolder /project -o nolock,tcp,bg,hard,intr,nfsvers
这个命令不成功使用下面这个命令:
mount -t nfs 192.168.16.3:/mnt/ShareFolder /project -o nolock
意思是将/mnt/ShareFolder目录下的文件夹及文件挂载到arm板上的project文件夹下。
(9)接下来就是在/mnt/ShareFolder中创建c文件,编译运行。
在arm端切换到挂载目录下,即前面挂载的project目录下,输入以下命令:
ls./Hello