交叉编译器是嵌入式开发的必要工具,但是由于目前大多数人使用64位ubuntu,在照着很多教程做的时候,就会失败,失败原因是64位ubuntu需要额外安装32位的兼容包。以arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2这个压缩文件为例子。执行解压命令:sudo tar jxvf /work/arm-linux-gcc-4.3.2.tar.bz2
添加环境变量:为了在任意目录和任意用户可以使用arm-linux-gcc,需要增加环境变量,不要去修改 /etc/environment文件了,如果切换到root用户或者使用sudo命令,还是找不到交叉编译器的。建议修改 /etc/bash.bashrc 文件, 不管普通用户还是root用户,都会读取本文件,都会找到交叉编译器。
在该.bashrc文件中最后一行添加:export PATH=$PATH:/home/XXX/bin
在我的ubuntu上是:export PATH=$PATH:/home/yangguang/Architecture/gcc-3.4.5-glibc-2.3.6/bin
然后source /etc/bash.bashrc使环境变量生效。重新打开终端即可。
注意,其中的XXX是用户刚才解压缩的那个安装包中arm-linux-gcc中bin文件的目录,要全部复制出来。
Ubuntu16.04版本当中应该安装执行:sudo apt-get install lib32ncurses5 lib32z1 这是32位的兼容库,安装之后,终端输入 arm-linux-gcc -v会出现版本信息,就安装成功了。
samba服务器
显然,嵌入式开发需要频繁交互文件在linux和windows上,传统的方式通过FileZilla_3.22.1_win64-setup这个工具登录,但是,要上传要更新要刷新什么的,还是太麻烦。
-
安装samba;输入命令apt-get install samba
按提示输入y,直到完成
-
安装完成后,备份samba配置文件,输入以下命令
cp /etc/samba/smb.conf /etc/samba/smb.conf.bk
备注:如果出现问题请把命令中smb.conf 与 smb.conf.bk 名字交换,即可恢复!备份是个好习惯。
- 打开配置文件 vim /etc/samba/smb.conf
在最下方(快捷键大写G调到最后)输入:
[share]
comment = Shared Folder require password
path = /home/share
public = yes
writable = yes
valid users = yangguang
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup
available = yes
browseable = yes
之后重启服务命令: service smbd restart && service nmbd restart输入两次密码即可
把已有的账户添加到samba里并设置新密码,我的账户是“yangguang”,输入命令:sudo smbpasswd -a yangguang
在虚拟机中创建目录share 权限777,位于/home/share 这个就是我们要和windows交互的linux文件夹,为了演示,我们创建一个hello_samba_t文件,看我们在windows中能否访问到。
查看虚拟机ip:
为了不必要的麻烦,我们把虚拟机的防火墙关闭,查看防火墙状态:
(
开启/关闭防火墙
sudo ufw enable|disable
)
在windows中按下win+r:回车之后
注意格式:\ 虚拟机ip地址文件名
输入我们添加的samba用户,这里我是yangguang和设置samba用户时设置的密码:
点击确定:
成功在windows上访问到了share目录,我们试试在windows上添加或者拖入文件到这个目录再在linux上查看。
在linux上ls一下:
OK,恭喜你,成功完成两个系统的交互。
Best practice:
虚拟机ip会经常变动,这样每次windows登录都需要更改ip,很麻烦,有没有什么办法可以设置确定ip的呢?答案是有的。