• 使用Windows的Linux子系统搭建嵌入式开发环境


      亲,都9102年了,还在用VMware跑嵌入式交叉编译链吗?

      北京时间2019年6月13日,Windows 10发布预览版本18917。版本的主要功能是Linux子系统(windows sub-system linux version 2, 后文简称wsl2)进行了升级,从网上的描述中可以看出,新版的wsl声称引入了完整的Linux内核,意味着我们可以用它来跑docker和i686架构程序(前者在微软官方页面中进行了展示,后者是wsl1所不支持的,因而在此之前嵌入式开发还是只能跑虚拟机或双系统,因为嵌入式编译链32位的居多,比如我使用的hisi的编译链)。

      好,话不多说,我们开始来搭建环境,首先你需要加入预览计划(截至2019年10月,消费者版本还是184xx版本,无法升级为18917),加入方式如下:

      首先是加入预览体验计划:

      重启完成后需要把更新频率调为快,然后去更新界面刷新,就会自动安装预览版本OS了:

      当界面显示“Insider Preview” “vb_release”等字样时,你就快吃上预览版了。

      这个漫长的过程结束之后,我们启用Linux子系统功能,这个步骤大家参考网上的教程即可,例如如何在 Windows 10 中安装 WSL2 的 Linux 子系统
      我引用的这篇文章大家参考第一步和第二步即可,值得一提的是其中有两个地方要说明一下,一是Ubuntu安装好要先运行,方式如下:

    还有就是有一行语句他写错了

    wsl --set-version Ubuntu> 2
    

    应该是没有这个“>”,即应为

    wsl --set-version Ubuntu 2
    

      待安装好Ubuntu后,我们就可以试着安装交叉编译的工具链并且试着编译了(我使用vscode打开的终端进行后续操作,vscode的默认终端我也设置为wsl了,这样会方便一些):

    然后安装32位的库和宿主的工具,使用以下命令:

    #宿主开发环境
    sudo apt install -y build-essential
    #32位库
    sudo apt install -y lib32ncurses5 lib32z1
    sudo apt install -y lib32stdc++6
    

    当然,你也可以先行替换软件包的源为阿里云,使用下面的语句即可:

    sudo sed -i "s/archive.ubuntu./mirrors.aliyun./g" /etc/apt/sources.list
    sudo apt update
    

      接下来是最重要的一步,为Ubuntu开启32位支持,使用下面的语句。然后在Windows上重启一项服务(相当于重启了Ubuntu,图片中重启方式二选一)
        (ps:似乎其实不需要重启,退出所有wsl的bash就行了)

    sudo dpkg --add-architecture i386
    

    然后就是编译成功的好消息:

    编译出来的程序,放到机器上就可以运行,下面是我测试截图

    使用wsl还有一个好处!就是我们可以使用同步代码在linux里面调试,比如我下面的操作

    进一步,我们可以在Ubuntu中调试(由于vscode+wsl支持远程调试,因此说不定你可以使用ide在wsl里调试好代码,然后移植到嵌入式平台)。

  • 相关阅读:
    asp.net文件操作类
    MSMQ是什么?
    Type.GetType()在跨程序集反射时返回null的解决方法
    ASP.NET反射
    VS单元测试入门实践教程
    详解Linq to SQL
    .Net资源文件全球化
    正则表达式使用详解
    C# 中的委托和事件详解
    python基础
  • 原文地址:https://www.cnblogs.com/Johness/p/use-wsl-build-cross-compile-environment.html
Copyright © 2020-2023  润新知