〇 前言
本人本科硕士皆是天坑专业,后自学转行去做了嵌入式软件开发,曾在华为和大疆等公司任职。
在转行自学的过程中,困难艰辛不必多说,幸运的是得到了网上很多大佬的帮助。现在不敢说小有所成,也算是偶有心得,回顾一路以来的困顿苦恼,决定把自己的一些经验拙见写成博客带给大家,希望能够帮助大家。也欢迎大家积极留言互动问问题,看到消息都会回复的。
最后,如果觉得文章有用或者能够帮助到你,麻烦点个赞给个关注支持一下,你的点赞关注是对我的最大肯定和支持,也是我不断创作的动力,同时也让我满足一下虚荣心,哈哈~
一 vscode真正强大的地方
根据前两篇文章,大家应该可以很容易的对vscode进行初始配置,但是vscode真正的精髓还没有触及到,本文将带领大家逐步了解vscode真正强大的地方。
vscode作为一个跨平台的代码编辑器,注意,只是代码编辑器,可以理解为记事本类型的软件,即本体只能进行文字或代码的输入。与其相对应的,宇宙最强IDE visual studio(下简称vs),是一款IDE(集成开发环境)。在vs中,不但可以编写代码,也可以对代码进行调试运行和打包等等,是一个全面的代码开发环境。那么为什么我们不选择vs而选择只能编辑的vscode呢?
这就要说说vscode真正强大的地方了,其真正强大在于其开源和扩展。开源代表了其软件免费,无数组织和个人都可以为其注入新的活力。扩展代表了vscode可以和无限多的插件任意组合,实现独属于自己的开发环境。即vscode+插件+相关环境=ide,并且在vscode上不仅可以开发c/c++,其他语言如java,python,shell等都可以进行开发调试,只需要安装不同的插件即可。和vs对比,虽然在c/c++上vs更为专业,但是其只能在win平台使用,且环境巨大,动不动就几十个G,并且商用收费,所以vscode这样轻量免费高扩展的开发环境能够满足90%用户的使用需求和功能。
对于嵌入式开发来说也是有越来越多的人转向vscode的怀抱,许多公司使用vscode作为标准的开发环境,比如我所在的dji,采用前端 windows环境下 vscode + 后端linux服务器上的vscode-server作为开发环境。通过这样的方式不仅能够进行代码的编辑和查看,同时vscode直接集成了terminal的功能,方便服务器进行编译和打包,这个配置之后会详细讲解。接下来先进入今天的主题,如何在win环境下使用vscode进行hello world。
二 开发环境概述
最简单的开发环境只需要代码编辑器+编译器即可。使用代码编辑器写代码,通过编译器将代码编译打包形成可执行文件。 代码编辑器就是我们的vscode了,那么编译器如何选择呢?
目前主流的编译器有gcc和llvm两种。
GCC是由GNU项目开发的编译器集合。“GNU”是“GNU’s Not Unix!”(GNU并非Unix!)的首字母递归缩写。GNU 计划的最终目标是打造出一套完全自由(即自由使用、自由更改、自由发布)、开源的操作系统,并初步将其命名为 GNU 操作系统。其logo是非洲牛羚(gnu的意思就是非洲牛羚)。
GCC旨在支持多种编程语言。同时它是Linux内核源代码的默认编译器,如果上过大学计算机课,学过linux的话肯定会知道在linux中写hello world都会使用gcc来进行编译和输出。简单来说gcc是跨平台的历史悠久(1987年)的老牌编译器。其支持多语言,多处理器架构,且同时能够很好的支持linux kernel,是目前使用最广泛的编译器之一。
而llvm起源于2000年,命名最早源自于底层虚拟机(Low Level Virtual Machine)的缩写,其logo为一只飞龙。其在模块扩展和性能优化方面独有建树,适用于需要高性能、可定制性和可扩展性的编译场景,如开发新的编程语言、构建新的编译器或工具链等。
总而言之LVM和GCC各有其独特的优势和适用场景。LLVM以其模块化设计、强大的优化能力和活跃的社区支持而著称,适用于需要高性能和可定制性的编译场景;而GCC则以其多语言支持、平台兼容性和成熟稳定性而广受欢迎,适用于广泛的编译需求,同时嵌入式开发绕不开linux,而gcc作为linux内核代码的默认编译器,更加适合嵌入式代码的编译。
对于看文章的你来说,不用纠结选哪个,选gcc就行(事实上,笔者本人对llvm也仅仅是了解,笔者待过的所有公司编译器框架都是使用gcc,因而也可以看出gcc的广泛和稳定性)。
本文使用gcc作为编译环境。
三 gcc环境配置
在windows上的gcc有三种分别是Cygwin、MinGW、mingw-w64,其具体的详细区别大家可以自行百度,此处不再赘述。简单来说Cygwin 提供了类 Unix 环境的兼容性,MinGW 和 mingw-w64 则提供了在 Windows 上使用 GCC 编译器进行 C 和 C++ 开发的工具集。其中,mingw-w64 专注于 64 位 Windows 系统的支持。
目前较为常用的是mingw-w64,本文也以此为例安装gcc。
mingw-w64 项目提供了很多 Windows 平台的工具链和包,对于windows平台可以这安装 w64devkit 。
如果打不开链接可以在文末下载笔者网盘中的资源。
将w64devkit下载之后,双击启动,会将相关文件解压出来,这里可以随便选择地址。
解压完成后,会出现w64devkit文件夹,其中有一些文件如下:
之后,将这个文件夹移动到合理的位置,方便进行路径配置,这里推荐放置在C:\Program Files\w64devkit,如下图所示:
放置完成后,需要配置环境变量来连接命令与二进制文件。
配置环境变量是干嘛的呢?
可以理解为,w64devkit中提供了很多的命令,比如最常见的gcc --version,这个命令是显示gcc的版本信息,如果直接在windows的终端(powershell或者cmd)中输入该命令,会返回找不到该命令的错误。
配置环境变量相当于告诉计算机执行命令的路径,通过遍历路径中的命令得到可执行文件的位置并且执行。
举个栗子,超市中有你最喜欢的快乐水,但是超市很大,你不知道在哪里,于是你跟售货员(终端)说你要买快乐水,但是售货员是新来的,不知道快乐水是什么,于是翻了翻货物笔记(环境变量),但是由于仓库管理员放假了没有登记快乐水的位置和数量,所以货物笔记上并没有快乐水的记录,于是售货员告诉你超市里没有快乐水。这时候仓库管理员回来了,在货物笔记上写上了快乐水的相关信息(增加环境变量),于是售货员(终端)知道去哪里拿快乐水给你了。
配置环境变量的地址为计算机-属性-高级系统设置-高级-环境变量,也可以在开始中直接搜索环境变量,点开编辑系统环境变量。
打开后,有两个选项,一个是用户变量,一个是系统变量。用户变量就是针对当前用户生效的,如果使用其他账户登录该计算机,则不会生效。系统变量就是针对所有用户生效,对于个人电脑来说,用户变量和系统变量没有差别,所以我这里直接写到系统变量里。
如下图,双击系统变量中的path,会出现右边编辑环境变量的界面,点击新建,输入C:\Program Files\w64devkit\bin 即可。
验证,打开vscode,在终端(使用powershell或者cmd也可以)中输入 gcc --version,会得到gcc版本信息,如下图:
如果没有的话可以重启一下vscode再试。总之能够打印出gcc的版本信息即为gcc环境配置成功。
四 软件下载
如果无法打开GitHub,可以使用笔者网盘中的资源,都是从GitHub中直接下载的,更新日期为2024.08.23.
我用夸克网盘分享了「w64devkit」,点击链接即可保存。
链接:https://pan.quark.cn/s/77664e592d16
提取码:Xic2
五 可能出现的问题
1.更改系统变量后并没有打印gcc的版本信息
答:如果使用vscode打印,则重启一下vscode,如果使用cmd和powershell打印,则重启一下计算机再重试。
如果帮助到你,麻烦点个赞给个关注,你的支持和关注是我持续更新的动力!谢谢~