win10子系统Ubuntu配置交叉编译链

最近做比赛,需要用到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连接子系统完成,谁用谁知道,真滴好用。

大概想到的就是这些了,希望可以帮助到爱倒腾的小朋友,如果有疑问欢迎留言!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容