嵌入式linux开发需要一台linux PC,如ubuntu,centOS等。同时需要安装一些工具和库,方便开发和交叉编译开源库。
1)ssh:
sudo apt-get install openssh-server
2)samba:
sudo apt install samba
假设Ubuntu的用户为default,设置为免密码,则
a). vim /etc/samba/smb.conf 在最后追加如下:
security = share
[x64_work]
path = /home/default/work
available = yes
browsealbe = yes
public = yes
guest ok = yes
writable = yes
create mask = 0755
directory mask = 0755
force user = default
b). sync
c). /etc/init.d/samba restart或者sudo service smbd restart等
3)vim: PC上不要再使用vi
sudo apt-get install vim
4)gcc/g++:
sudo apt-get install build-essential
5)串口工具
sudo apt-get install cutecom
或者古老的sudo apt-get install minicom
6)git/svn
sudo apt-get install git
或sudo apt-get install subversion
7)编译linux内核 需要安装ncurses库、mkimage工具等
sudo apt-get install libncurses5-dev ncurses-term libncursesw5-dev
sudo apt-get install uboot-mkimage
现在貌似是sudo apt-get install u-boot-tools,才能安装
8)制作根文件系统需要安装mtd工具
如 mtd-utils等
apt-get install zlib1g-dev liblzo2-dev uuid-dev
到http://www.linux-mtd.infradead.org/source.html下载source
解压
export WITHOUT_XATTR=1 或者make后面加入CFLAGS编译选项"-DWITHOUT_XATTR"
make
make install
而,ubuntu16.04本地gcc编译mtd-utils时(在pc上运行)出现.....bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory错误
可安装:
sudo apt-get install lib32z1
9)编译开源代码,如,含有m4、autoconfig、automake等配置文件,需要运行./autogen.sh
sudo apt-get install autoconf automake libtool
某些开源代码还会依赖openssl,如sudo apt-get install libssl-dev openssl 等
10)安装nfs服务器
a). sudo apt-get install nfs-kernel-server portmap
b). sudo vim /etc/experts在最后添加如下内容:
/home/default/work/nfs_rootfs/ *(rw,sync,no_root_squash)
c). sudo /etc/init.d/nfs-kernel-server restart ,重启服务
d). 单板挂载:假设pc的ip为172.16.129.110,则以下命令将pc的nfs_rootfs目录挂载到单板的mnt目录下,另外自行查询nfs不同版本间的挂载命令差异,例如 mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 172.16.129.110:/home/default/work/nfs_rootfs /mnt
或者mount -t nfs -o nolock,nfsvers=3,vers=3 172.16.129.110:/home/default/work/nfs_rootfs /mnt 等
另外,windows(如WIN7等)也可以用HaneWinNFSServer软件(https://download.csdn.net/download/litao31415/11960832)开启nfs服务:
修改安装目录下(nfsd)的exports文件:
C:\Users\xxxx\Desktop\code -public -name:my_nfs
即导出C:\Users\xxxx\Desktop\nfs文件夹,属性为可读写,同时定义nfs client观察到的路径名为my_nfs
修改好exports后需要管理员权限运行RestartService.bat脚本:
@echo off
cd
echo 正在重启服务,请稍候……
net stop nfsserver
net stop pmapdaemon
net start pmapdaemon
net start nfsserver
echo 完成
pause
此时可以在开发板上将win7下的code文件夹(挂载时使用my_nfs名字即可)挂载到/tmp/nfs下
mount -t nfs -o vers=3,proto=tcp,nolock 172.16.129.25:/my_nfs /tmp/nfs
嵌入式开发中HaneWinNFSServer只用于替代tftp,不建议直接在这个目录下进行开发,毕竟windows系统下文件是不区分大小写的,同时软链接会实体化,更离谱的是,文件夹软链接变成文件而不是文件夹!!
持续更新----------------------------------------------------------------------------------------------------------------------------------------------
ps:如果使用的是虚拟机,分配的内存太小时会出现gcc内部错误,需要使用swap
出现内存空间不够时,需要申请swap空间,如
sudo dd if=/dev/zero of=/swapfile bs=64M count=16
#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=1024MB = 1GB
sudo mkswap /swapfile
#把刚才空间格式化成swap格式
sudo swapon /swapfile
#使用刚才创建的swap空间
另外,ubuntu18.04的64位如果要安装兼容32的库(wrong ELF class: ELFCLASS64),需要安装:
sudo apt-get install lib32ncurses5 lib32z1