Linux 交叉编译环境详细配置
2019-07-13 04:54发布
生成海报
我用过很久的Ubuntu,不过也是Linux下开发的新手,我在使用Linux做交叉编译环境时候遇到不少麻烦,一顿“google、百度”发现有用的文章没几个,都是互相抄,还抄的显得很专业,嗬嗬,所以想这里写些经验体会,加以分享!:-)
不多说,直奔正题!
关于嵌入式LINUX开发环境主要有以下几个方案:
1、直接安装 LINUX 操作系统;
2、在 WINDOWS 下安装虚拟机后,再在虚拟机中安装LINXUX操作系统;
3、两台电脑,一台 Linux 服务器,一台 Windows 客户端。
三种方案各有各的好处, 第三种方案,这种方式适合多人同时开发。可是需要以下设备:
1台 Linux 服务器
服务器,用来交叉编译 bootlaoder、内核以及应用程序等,
1台 Windows 机器
机器,SSH远程登陆至 Linux 服务器进行操作。
考虑到开发人员并不是那么多,也为了节省一台服务器,我们选择第一种方案:直接安装 LINUX 操作系统。
一、安装Ubuntu 10.10
至于以前使用Windows XP的选手,突然让我们换装Linux系统构成双系统,会有许多麻烦,因为Linux文件系统为EXT2、EXT3等文件系统,如果我们直接安装Linux,将使Linux系统文件与原Windows
XP系统文件隔离,访问起来麻烦。而且Linux的安装很容易破坏原XP的启动,为此,我们选择Ubuntu的简单安装方式,在Windows环境下,像安装软件一样使用WUBI安装Ubuntu 10.10,简单方便,至于具体安装步骤,网上有的是,不多罗嗦,也不是本文的重点`````至此Ubuntu
10.10算是安装结束。
二、Ubuntu
10.10的基本设置
为了接下来的配置方便,这里先对Ubuntu进行一些简单的配置。
1、右键增加“以管理员身份打开“。
在终端输入sudo
apt-get install nautilus-gksu,然后回车就可以了。
2、修改root账户的密码。
在终端键入“sudo
passwd root” ,然后两次输入密码,即可。
以后在终端需要转换root账户的时候,只需键入”su
root“,输入密码。
请牢记密码哈,当然如果实在忘了,可以通过$sudo
passwd root 进行更改。
三、Ubuntu
10.10下的NFS服务器配置
1、安装Ubuntu
NFS
Ubuntu上默认是没有安装Ubuntu
NFS 服务器的,因此我们首先安装Ubuntu NFS服务器端:
NFS(Network
File System, 网络文件系统)可以通过网络将分享不同主机(不同的OS)的目录——可以通过NFS挂载远程主机的目录,访问该目录就像访问本地目录一样!因此,我们交叉编译以后,可以让开发板共享Ubuntu下编译好的文件目录,来运行程序。
(一般而言,使用nfs能够方便地使各unix-like系统之间实现共享.但如果需要在unix-like和windows系统之间共享,就得使用samba了!)
NFS运行在SUN的RPC(Remote
Procedure Call, 远程过程调用)基础上, RPC定义了一种与系统无关的方法来实现进程间通信.由此, NFS server也可以看作是RPC server.
正因为NFS是一个RPC服务程序,所以在使用它之前,先要映射好端口——通过portmap设定.比如:某个NFS
client发起NFS服务请求时,它需要先得到一个端口(port).所以它先通过portmap得到port number. (不仅NFS,所有的RPC服务程序启动之前,都需要设定好portmap,不过一般情况下,使用默认的即可)。
$
sudo apt-get install nfs-kernel-server
在一些文档中,提出还需要使用apt-get来手动安装NFS的客户端nfs-common,以及端口映射器portmap,但其实这是没有必要的,因为在安装nfs-kernel-server时,apt会自动为我们把它们安装好。Nfs-common和nfs-kernel-server都依赖于portmap。
2、配置portmap
方法1:编辑/etc/default/portmap,将 -i
127.0.0.1去掉.
方法2:$ sudo
dpkg-reconfigure portmap ,对Should portmap be bound to the loopback address?选N.
配置/etc/hosts.deny
(禁止任何host(主机)能和你的NFS服务器进行NFS连接),加入:
###
NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
配置/etc/hosts.allow
允许那些你想要的主机和你的NFS服务器建立连接。下列步骤将允许任何IP地址以192.168.1开头的主机(连接到NFS服务器上),也可以指定特定的IP地址。参看man页hosts_access(5),
hosts_options(5)。加入:
###
NFS DAEMONS
portmap:
192.168.1.
lockd:
192.168.1.
rquotad:
192.168.1.
mountd:
192.168.1.
statd:
192.168.1.
/etc/hosts.deny和 /etc/hosts.allow 设置对portmap的访问.采用这两个配置文件有点类似"mask"的意思.现在/etc/hosts.deny中禁止所有用户对portmap的访问.再在/etc/hosts.allow中允许某些用户对portmap的访问.
运行$ sudo
/etc/init.d/portmap restart重启portmap daemon.
3、配置/etc/exports
Ubuntu NFS允许挂载的目录及权限在文件/etc/exports中进行了定义。
例如,我们要将根目录下的/home/sun/mc9260目录共享出来,那么我们需要在/etc目录下找到exports文件,这时候就看出我们对Ubuntu的配置起作用了,单击鼠标右键,以管理员身份打开此文件,在文件的末尾添加如下一行:
/home/sun/mc9260
*(rw,sync,no_root_squash)
其中:/home/sun/mc9260是要共享的目录,*代表允许所有的网络段访问(此处十分关键,如果不是*的话,后面自己验证自己的共享目录是否可以加载的时候会出问题,后面会再提到,标记此处为:“甲”),rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squash是Ubuntu
NFS客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限。
其它Ubuntu
NFS常用的参数有:
ro只读访问
rw读写访问sync所有数据在请求时写入共享
async nfs在写入数据前可以响应请求
secure nfs通过1024以下的安全TCP/IP端口发送
insecure nfs通过1024以上的端口发送
wdelay如果多个用户要写入nfs目录,则归组写入(默认)
no_wdelay如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。
hide在nfs共享目录中不共享其子目录
no_hide共享nfs目录的子目录
subtree_check如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
no_subtree_check和上面相对,不检查父目录权限
all_squash共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID
4、Ubuntu
NFS重启服务
$sudo /etc/init.d/portmap
restart
$sudo /etc/init.d/nfs-kernel-server restart
5、测试Ubuntu
NFS
此时可以运行以下命令来显示一下共享出来的目录:
$showmount
-e
或者可以使用以下命令把它挂载在本地磁盘上,例如将/home/sun/mc9260挂载到/mnt下:
$mount
-t nfs localhost:/home/sun/mc9260 /mnt
可以运行df命令查看是否挂载成功。查看后可以使用以下命令卸载:
$
sudo umount /mnt (注意不要随便运行此句)
由于我在home/sun/mc9260 目录下建立了hello文件夹,所以$ls
/mnt会有以下结果:
四、Ubuntu10.10下的“超级终端”
在windows下大家都使用过“超级终端”,可以通过超级终端与开发板进行交互。由于这次我使用的开发板为ATMEL的MC9620处理器,不支持显示屏来进行交互,所以这里我们使用“超级终端”,那么在Linux下的超级终端都有哪些呢?最著名的莫属MiniCom了,不过我觉得使用起来不是很方便,我采用的是GTKTerm,关于GTKTerm的安装比较简单:
$sudo
apt-get install gtkterm
$
gtkterm //回车后就会弹出一个对话柜 :
一般情况下不用设置就可以使用,但是有时候不能用的情况下你要对configuration(配置)进行设置,点击configuration:对相应的产数进行设置,OK保存就行了,不用了直接退出。
以下进入开发板的Linux系统,即可看出串口连接已经完成
至于不喜欢GTKTerm的可以选择Minicom,安装过程是我择优转载的:
一般linux系统都自带了此工具,如果你的linux系统没有安装(判断是否安装参见步骤2)
一、安装
将下载的文件解压到任意目录,例如:/minicom
进入/minicom,执行./configure
执行命令make
执行命令make
install
上述过程参见解压后的README
在debian、Ubuntu下直接终端运行apt-get
install minicom即可
二、配置(需要root用户角 {MOD})
执行minicom
–s后出现配置界面
==========================
[configuration]
Filename
and paths
File
transfer and protocols
Serial
port setup
Modem
and dialing
Screen
and keyboard
Save
setup as df1
Save
setup as……
Exit
Exit
from minicom
==========================
使用向下键选择serial port setup(串口设置),按回车出现设置界面
==========
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮