linux笔记
虚拟机、ARM开发板、PC端三者的关系
- 虚拟机起桥梁作用,用来做工具栏的一些编译以及文件拷贝等功能作用。
- ARM板平台架设C端功能需求。
- PC端功能程序逻辑实现通过虚拟机以及交叉编译工具链等一系列操作将可执行文件写入到ARM板里。
ubuntu的配置信息
- 共享文件夹的不能显示在虚拟机的桌面,一定得安装gcc 编译工具链
sudo apt install gcc make perl -y sudo apt update - ubuntu交叉编译需安装arm环境下得gcc、g++,以及ubuntu下的gcc、g++: 如下命令1是安装arm环境下的gcc:
sudo apt-get install gcc-arm-linux-gnueabihf 如下命令2是安装arm环境下的g++:
sudo apt-get install g+±arm-linux-gnueabihf+
如下命令3是安装ubuntu环境下的g++: sudo apt install g++
如下命令4是安装ubuntu环境下的gcc: sudo apt install gcc
ubuntu下的Cmake安装
- 使用ubuntu18.04,安装cmake使用如下命令: sudo apt install cmake
- 安装完成后,在终端下输入cmake -version查看cmake版本
- 创建CMakeLists文件,运行命令:cmake .
如果出现No CMAKE_C_COMPILER could be found时请查看ubuntu的配置信息中的命令3与4是否都以及完成好了。
ubuntu下的nfs挂载注意事项
- nfs服务器搭建参考野火教学文档即可。
注:共享文件夹不可用来做nfs桥接的文件夹,否则会提示搭建nfs服务器时报错:mount.nfs: access denied by server while mounting - 挂载时参考野火nfs配置章节里面的,注意192.168.11.*/24意思是11网段的客户端都可以访问,配置子网掩码/24为24个1(255.255.255.0)是错误的,应当在通配符*后面就可以直接省略去
错误的:
/home/embedfire/nfsfile 192.168.11.*/24(rw,sync,all_squash,anonuid=1000,anongid=1000,no_subtree_check)
正确的:
/home/embedfire/nfsfile 192.168.11.*(rw,sync,all_squash,anonuid=1000,anongid=1000,no_subtree_check)
编译环境搭建
虚拟机中的编译环境必须与arm板上使用的环境一致,否则会出现一些库文件之类的连接不成功报错。比如运行程序的时候报错32位的可执行文件在64位系统上执行出错:
error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS64
此次开发开发板上使用的是aarch64-linux-gnu-g++,而cmake中使用的是arm-linux-gnueabihf-g++这样就会报以上错误。切记
目录
- cd / 是跳转到根目录:根目录是所有用户共享的目录
- cd ~ 是跳转到当前用户的家目录
- cd~命令后可以通过pwd命令查看当前目录,发现实则为根目录下的root