最近做比赛,需要用到linux环境下的Arm芯片的交叉编译环境,原则上配置其他编译器相同操作。本着爱倒腾不嫌麻烦的热情。尝试实现win10+VSCode的编译环境搭建,(中间碰到问题想让淘宝专门装系统的解决,差点坑我70块)废话不多少,直接讲讲踩过的坑。
我的系统版本是win10-1909家庭中文版,安装ubuntu 18.04LTS,具体安装可见子系统安装教程,在这里不建议大家倒腾图形界面什么的,可能会导致一些奇奇怪怪的错误。
首先打开源配置文件:
sudo vim /etc/apt/sources.list
如果不会vim可以自己查找一下命令。建议从官网更换和自己ubuntu匹配的源,这里泼出清华源地址,注意一定要版本匹配。
然后就是更新源:
sudo apt update
sudo apt upgrade
在此之后就不建议大家进行upgrade了,可能会造成一些版本不兼容问题。
接下来就是安装必要的基础编译软件咯(可以根据自己的需求安装部分):
sudo apt-get install git build-essential python diffstat texinfo gawk chrpath dos2unix wget unzip socat doxygen libc6:i386 libncurses5:i386 libstdc++6:i386 libz1:i386
注意,最后几个是32位编译器所需环境,在WSL2中是默认没有的,如果你的电脑报相关错误比如找不到包,请创建i386架构再尝试安装:
sudo dpkg --add-architecture i386
sudo apt-get update
有的时候安装i386依赖库时会出现一些奇奇怪怪的错误,可以用如下命令解决(亲测,巨坑),如果没出现问题请直接跳过:
cd /var/lib/dpkg
sudo mv info info.bak
sudo mkdir info
sudo apt-get upgrade
最后结果:
此时子系统应当已经有c++和python的运行环境,测试一下gcc或者g++应当显示如下:
g++ -v
恭喜,如果你只是做linux环境下的c++或c编译,已经可以使用了。我建议在win10下安装VScode进行调试和编译。vscode可以自动识别电脑子系统配置编译环境。大家可以在网上搜搜相关教程。
需要交叉编译环境的,请准备好自己的SDK包例如***.bin文件,windows进入bin文件根目录,在地址栏输入bash就可在此打开子系统(win10子系统可以直接访问windows磁盘比虚拟机不知道方便多少!):
我安装了arm的编译链,命令如下:
./ti-processor-sdk-linux-rt-am57xx-evm-05.03.00.07-Linux-x86-Install.bin
按照教程下一步,注意SDK支持的ubuntu版本!,直到:
不能修改安装路径!会导致找不到文件的错误!之前我为了节省C盘空间安装到了mnt/d盘下面,无法使用,请大家一定注意。
安装完成后需要配置环境,使用vim打开环境配置文件:
sudo vim ~/.bashrc
在最下面加入交叉编译链地址:
export PATH=$PATH:/home/ray/ti-processor-sdk-linux-rt-am57xx-evm-05.03.00.07/linux-devkit/sysroots/x86_64-arago-linux/usr/bin
找不到地址请在win10下显示隐藏文件,找到:
C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
最后重新载入:
source ~/.bashrc
最后输入自己的交叉编译命令测试是否安装成功,我的是:
arm-linux-gnueabihf-g++ -v
至此安装成功,在vscode开发时只需注意一下把编译器改成自己需要的即可。
其他一些小细节:
1.子系统现在貌似只能在C盘,似乎有大神可以实现装在其他盘但看起来挺麻烦的。因此安装前确认一下自己C盘空间是否足够,大概需要ubuntu系统4G加交叉编译环境13G。
2.子系统似乎暂时无法调用摄像头!但微软已经在为下一个版本适配USB摄像头准备了。
3.子系统可以连接串口,因此调试硬件会变得非常简单,例如win10设备管理器里的COM3对应ttyS3。
4.gedit等图形显示工具都无法运作,子系统目前只支持命令行输入,代码及开发建议vscode连接子系统完成,谁用谁知道,真滴好用。
大概想到的就是这些了,希望可以帮助到爱倒腾的小朋友,如果有疑问欢迎留言!