Linux交叉编译环境
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开发编译环境
1.交叉编译器的安装,与使用
以ubuntu-14.04.4-desktop-amd64 为例
将附录1的arm_toolchain.tar.gz 选择一个目录COPY过去,(此处以/opt为例)
tar zxvf arm_toolchain.tar.gz
修改~/.bashrc
在最后一行添加
将/opt/X3改成你解压的所在目录即可
source ~/.bashrc
在终端查看是否正确,输入arm后按TAB键若出现
安交叉编译器安装正确
若不添加该环境变量,则在使用该编译器时,请使用绝对路径
如:
部分LINUX操作系统,可能存在所需的库并未安装,在编译时若提示未能找到相关库,请自行搜索该库的相应安装
若出现
arm-Linux-gcc /usr/local/arm/4.3.2/bin/arm-linux-gcc: 行3: /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc: 没有那个文件或目录(No such file or directory)
且进入external-toolchain/bin/ 直接运行./ arm-none-linux-gnueabi-gcc出现同样提示,则可能原因是64位系统需要安装32位相应库
解决方法:
方法一:
sudo apt-get install lib32z1
方法二:
sudo apt-get install g++-multilib
方法三:
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install ia32-libs
(工具:附录1-arm_toolchain.tar.gz)
2.NFS服务安装
首先安装nfs-kernel-server
apt-get install nfs-kernel-server
NFS主要有3类选项:
访问权限选项
设置输出目录只读:ro
设置输出目录读写:rw
用户映射选项
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;在/etc/exports文件中添加配置:
此处添加了二个输出目录作为网络共享目录,可用于挂载
在/etc/hosts.allow中添加配置:
portmap:192.168.0.0/255.255.0.0 (表示可访问的IP地址)
在/etc/hosts.deny中添加配置:
portmap:ALL
重新启动两个服务:
service portmap restart
service nfs-kernel-server restart
(其它系统请自行搜索相关方法安装NFS以及启动服务)
3.打包与调试终端
3.1打包debug版终端机
解压附录2
pack下面有三个文件夹output, pack_src, pctools,一个脚本文件pack
pack_src,该文件夹下存放不同项目的文件夹,文件夹名以机器型号命名。如B1S-801CD16S7,
目录结构如下图,有boot、config、kernel、rootfs、system、tmp
( B1S-801CD16S7目录结构)
其中boot和kernel一般是不需要修改的,主要修改config、rootfs、system文件夹下的文件。
system目录下主要放置应用程序相关的资源图片(image)、字体(FONT目录)、界面配置文件(layout)、动态库(lib/usrlib)、声音文件(sound)、设备驱动(vendor/modules)等
config一般只需要修改以下两个文件
---logo.jpg 开机界面
---env.cfg 调试时把PC上的某个目录挂载成根文件系统需要修改挂载路径和IP
(看NFS服务一节)
修改env.cfg