Windows+VSCode编译在Linux-x86_64环境上运行的程序

一、简介

本文主要介绍在Windows平台上使用VSCode,从而可以一键编译出运行在Linux-x86_64环境中的程序或库。

二、实现方式

① 交叉编译

② WSL(Windows Subsystem for Linux)

三、交叉编译

关于交叉编译的配置,我之前一篇博客里面已经非常详细地列举了步骤,只不过之前用的交叉编译工具链是Linux-Arm环境的,今天是Linux-x86_64的,步骤上其实一模一样,不同之处就是用的交叉编译工具链不一样。

之前的交叉编译教程博客链接: https://www.cnblogs.com/Clark-Zhang/p/16303434.html

linux-x86_64交叉编译工具链下载地址: https://pan.baidu.com/s/1gXCe9VzzvGAcdcfiYNG3hw?pwd=4h3u 提取码:4h3u

下载完后解压会得到一个文件夹,里面包含gcc-9.3.0文件夹和ubuntu-x64.cmake文件,把这两个东西与之前配置linux-arm时所用的gcc-7.5文件夹以及arm.cmake放在同一目录即可,然后按照教程步骤一步步来即可,linux-arm便用arm.cmake,linux-x86_64便用ubuntu-x64.cmake。

配置完后就能够点击build一键变异出运行在Linux-x86_64环境中的程序了(需要系统最低ubuntu-20.04)。

经过我的测试,正常编译C++程序是没什么问题的,但是如果程序调用了其他x86系统上编译的库,cmakelist.txt中可能需要加上add_compile_options(-fno-stack-protector),就在一开始加就行,否则编译会不通过。

综上,我感觉交叉编译勉强能用,但是却又感觉有那么一点瑕疵,所以我推荐用WSL的方式,配合VScode相当于本机编译了,没用过的人可能会觉得装个linux系统好麻烦,不想用,但是相信我,我也是个怕麻烦的人,我觉得好用的,那说明操作十分傻瓜化,用户体验很好。下面就开始介绍WSL方式。

四、WSL(根据官方文档,必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11)

  1. 安装wsl

1.1 自动安装

打开命令行输入wsl –install,自动安装,然后重启电脑。(我用的不是这种方法,下面我会介绍手动安装,其实也没几步)

1.2 手动安装

① win+i 键,在弹出的设置界面中点击更新和安全

② 点击左边列表中的开发者选项,将开发人员模式打开,默认是关的

Windows+VSCode编译在Linux-x86_64环境上运行的程序

③ 返回设置主页面,点击应用

Windows+VSCode编译在Linux-x86_64环境上运行的程序

④ 点击可选功能

Windows+VSCode编译在Linux-x86_64环境上运行的程序

⑤ 进去后拉到最下面,点击更多windows功能

Windows+VSCode编译在Linux-x86_64环境上运行的程序

⑥ 在弹出的窗口中拉到最下面,将图中所示勾选上。

Windows+VSCode编译在Linux-x86_64环境上运行的程序

⑦ 打开微软应用商店

Windows+VSCode编译在Linux-x86_64环境上运行的程序

⑧ 输入ubuntu进行搜索

Windows+VSCode编译在Linux-x86_64环境上运行的程序

⑨ 选择你想要的安装的ubuntu版本,我装的是20.04.4

⑩ 安装时会让你设置用户名和密码,随便起。大概几分钟就能装好

  1. 配置环境

以上步骤已经将linux系统装好了,但是想要编译程序还需要安装cmake以及gcc

以下命令都是在wsl命令行中输入

2.1 sudo apt-get update (更新环境,需要等一会)

2.2 sudo apt-get install g++(安装编译所需环境)

2.3 sudo apt install cmake (安装cmake)

  1. 使用vscode

3.1 vscode新建一个窗口

3.2 安装远程插件

Windows+VSCode编译在Linux-x86_64环境上运行的程序

3.3 点击vscode左下角绿色图标

Windows+VSCode编译在Linux-x86_64环境上运行的程序

3.4 选择图中所示这个,然后vscode能够直接连接到wsl,十分便捷!

Windows+VSCode编译在Linux-x86_64环境上运行的程序

连接成功会显示下图这个

Windows+VSCode编译在Linux-x86_64环境上运行的程序

3.5 然后选择打开文件夹,打开需要编译的项目,支持直接访问windows盘上面的文件夹,目录在/mnt, 下面就是各个盘符

Windows+VSCode编译在Linux-x86_64环境上运行的程序

Windows+VSCode编译在Linux-x86_64环境上运行的程序

3.6 之后就跟正常编译项目一样,选择编译器进行编译。

、总结

我个人更推荐wsl,跟本机编译没什么差别,而且和windows互通,访问文件十分方便。

Original: https://www.cnblogs.com/Clark-Zhang/p/16309189.html
Author: 朔月の流光
Title: Windows+VSCode编译在Linux-x86_64环境上运行的程序

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582748/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 大数据——综合案例

    一、本地数据集上传到到数据仓库Hive 1、 实验数据集的下载 将user.zip下载到指定目录 2.给hadoop用户赋予针对bigdatacase目录的各种操作权限 3.创建一…

    Linux 2023年6月6日
    094
  • Swagger2 Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException报错

    报错信息: Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.la…

    Linux 2023年6月14日
    079
  • Keytool配置 Tomcat的HTTPS双向认证

    keytool 简介 Keytool 是一个 Java数据证书的管理工具, Keytool将密钥(key)和证书(certificates)存在一个称为 keystore的文件中。…

    Linux 2023年6月6日
    0137
  • DHCP欺骗攻击—模拟

    实验拓扑: 基本配置: DHCP服务器配置: 客户端配置: 攻击者配置: 使用云与kail桥接 云: kail虚拟机配置: 为kali linux也添加一张网卡,桥接到VMnet1…

    Linux 2023年6月13日
    098
  • Java 内功修炼 之 数据结构与算法(二)

    一、二叉树补充、多叉树 1、二叉树(非递归实现遍历) (1)前提前面一篇介绍了 二叉树、顺序二叉树、线索二叉树、哈夫曼树等树结构。可参考:https://www.cnblogs.c…

    Linux 2023年6月11日
    090
  • vue组件传值和路由——day04

    <script><br> var vm = new Vue({<br> el: ‘#app’,<br> data: {<br&…

    Linux 2023年6月7日
    0104
  • Linux系统调用接口

    Linux系统调用接口 进程控制 系统调用 描述 fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 终止进程 _exit 立即终止…

    Linux 2023年6月13日
    0108
  • 模拟重装Kubernetes(k8s)集群:删除k8s集群然后重装

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    090
  • [转帖]shell学习之shell基础知识了解

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年5月28日
    0110
  • 用shell抓取某考试试题

    一、背景 最近公司组织考信息安全,但考试机构没有整理出试题,只给了以下几个在线练习的链接,想着用博客整理下题库题型,奈何这个只能用拍照图片,然后用图片转文字的方式太慢,累死个人了,…

    Linux 2023年6月6日
    0109
  • JAVAssist字节码操作

    Java 动态性的两种常见实现方式 字节码操作 反射 运行时操作字节码可以让我们实现如下功能: 动态生成新的类 动态改变某个类的结构(添加/删除/修改新的属性/方法) 优势: 比反…

    Linux 2023年6月13日
    097
  • Redis基础教程

    redis基础教程 1、 string数据结构 a) SET server:name “fido” b) SETNX server:name1″…

    Linux 2023年5月28日
    089
  • algorithm 头文件参考

    定义执行算法的 C++ 标准库容器模板函数。 该 <algorithm></algorithm> 库还使用该 #include <initialize…

    Linux 2023年6月7日
    0120
  • Ubuntu常用命令

    Ubuntu(18.04)下更改用户名和主机名 更改主机名字: (1)修改hostname文件 这个文件中的内容是用来显示主机名的,修改这个文件后,立刻重启 (2)修改hosts文…

    Linux 2023年6月13日
    094
  • 如何在Windows 10 上定时备份线上Minio 资源

    @ 一、系统环境 二、软件安装 三、设置定时任务 3.1 创建账号 3.2 同步测试 3.3 编写同步脚本 3.4 脚本测试 3.5 创建定时任务 3.6 定时任务测试 四、总结 …

    Linux 2023年5月27日
    0189
  • Linux系统Yum中的$releasever和$basearch变量

    Yum的配置文件中包含大量的$releasever和$basearch变量,那么他们的取值是什么呢? 为什么要折腾这个玩意呢?有点地方的网络是私有化网络,内部有大量的Linux服务…

    Linux 2023年6月8日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球