亲,都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里调试好代码,然后移植到嵌入式平台)。

使用Windows的Linux子系统搭建嵌入式开发环境的更多相关文章

  1. 【Hadoop】:Windows下使用IDEA搭建Hadoop开发环境

    笔者鼓弄了两个星期,终于把所有有关hadoop的环境配置好了,一是虚拟机上的完全分布式集群,但是为了平时写代码的方便,则在windows上也配置了hadoop的伪分布式集群,同时在IDEA上就可以编写 ...

  2. Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程

     Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程 一.准备工具: QT-SDK for Windows:http://get.qt.nokia.com/qtsdk/qt-sd ...

  3. Windows(WSL2) Linux子系统搭建Docker环境

    摘要:本文主要介绍了如何再Windows(WSL2)中启用Linux系统中,并搭建Docker环境. WSL是适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux ...

  4. 使用eclipse搭建嵌入式开发环境

    下载jdk http://download.oracle.com/otn-pub/java/jdk/7u4-b20/jdk-7u4-linux-i586.tar.gz 下载eclipse-cpp-ga ...

  5. Linux下搭建hadoop开发环境-超详细

    先决条件:开发机器需要联网 已安装java 已安装Desktop组 1.上传安装软件到linux上: 2.安装maven,用于管理项目依赖包:以hadoop用户安装apache-maven-3.0.5 ...

  6. Windows使用Vagrant&VirtualBox搭建虚拟开发环境

    Vagrant 是一款用来构建虚拟开发环境的工具 , 我们可以通过 Vagrant 封装一个 Linux 的开发环境 , 分发给团队成员 ; 成员可以在自己喜欢的桌面系统 Mac/Windows/Li ...

  7. Windows下使用VS2017搭建FLTK开发环境

    环境介绍 系统:win10 64位 IDE:VS 2017 Community FLTK版本:1.3.4-2 下载FLTK 截止到本文编写,FLTK的最新稳定版本是1.3.4-2.我们从官网(www. ...

  8. [Linux] PHP程序员玩转Linux系列-搭建代码开发环境

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 有些同学可能觉得我写的都是啥yum安装的,随便配置一下而已,没啥技术含量,我的目的 ...

  9. Windows系统结合MinGW搭建软件开发环境

    MinGW介绍 MinGW,即Minimalist GNU For Windows,它包含了GNU工具集的运行环境.GCC编译器工具集以及其它的GNU程序开发工具(如make.gawk.grep等等) ...

随机推荐

  1. 一款常用的截图工具(能够截gif动图)

    这款工具用来截程序的演示GIF图片,灰常方便. 直接上Github地址: https://github.com/NickeManarin/ScreenToGif

  2. 拒绝CPU挖矿矿工有责

    长期以来CPU挖矿给挖矿行业带来持久的负面影响,因为CPU是电脑的核心设备,一挖矿就干不了别的了,大家是否可以达成共识拒绝CPU挖矿? 显卡挖矿刚好构建在不影响大众的日常工作生活对电脑的需求之上,家用 ...

  3. .net Dapper 学习系列(1) ---Dapper入门

    目录 写在前面 为什么选择Dapper 在项目中安装Dapper 在项目中使用Dapper 在项目中使用Dapper 进行单表增删改数据操作 总结 写在前面 Dapper 是一款轻量级ORM架构.为解 ...

  4. C# vb .NET生成QR二维码

    二维码比条形码具有更多优势,有些场合使用二维码比较多,比如支付.通过将某些数据生成二维码,就可以实现一码走天下.那么如何在C#,.Net平台代码里生成二维码呢?答案是使用SharpBarcode! S ...

  5. python 字符前缀,运算符、换行符、数据类型和变量

    补充 *)/ 表示的除法即使是整数,结果也是浮点数 *)python表示的整数是没有大小限制的.而某些语言根据其储存长度是有大小限制的.例如Java对32位整数的范围限制在-2147483648-21 ...

  6. Java学习——网络编程

    Java学习——网络编程 摘要:本文主要介绍了什么是网络编程,以及如何使用Java语言进行网络编程. 部分内容来自以下博客: https://www.cnblogs.com/renyuan/p/269 ...

  7. Java生鲜电商平台-高并发的设计与架构

    Java生鲜电商平台-高并发的设计与架构 说明:源码下载Java开源生鲜电商平台以及高并发的设计与架构文档 对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中 ...

  8. centos下非yum方式安装docker环境

    1.下载docker源码包 docker官网地址: https://download.docker.com/linux/static/stable/ 选择.tgz的包下载,例如:https://dow ...

  9. android studio学习----gradle基础

    Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. 安装Gradle 在And ...

  10. 多线程学习笔记(二) BackgroundWorker 和 ProgressChanged

    BackgroundWorker是在内部使用了线程池的技术:同时,在Winform 或WPF编码中,它还给工作线程和UI线程提供了交互的能力. Thread和ThreadPool默认都没有提供这种交互 ...