一、简介
本文主要介绍在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功能

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

⑦ 打开微软应用商店

⑧ 输入ubuntu进行搜索

⑨ 选择你想要的安装的ubuntu版本,我装的是20.04.4
⑩ 安装时会让你设置用户名和密码,随便起。大概几分钟就能装好
2. 配置环境
以上步骤已经将linux系统装好了,但是想要编译程序还需要安装cmake以及gcc
以下命令都是在wsl命令行中输入
2.1 sudo apt-get update (更新环境,需要等一会)
2.2 sudo apt-get install g++(安装编译所需环境)
2.3 sudo apt install cmake (安装cmake)
3. 使用vscode
3.1 vscode新建一个窗口
3.2 安装远程插件

3.3 点击vscode左下角绿色图标

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

连接成功会显示下图这个

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


3.6 之后就跟正常编译项目一样,选择编译器进行编译。
五、总结
我个人更推荐wsl,跟本机编译没什么差别,而且和windows互通,访问文件十分方便。
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解