美文网首页
Win10+WSL开发踩坑记录

Win10+WSL开发踩坑记录

作者: 路过麦田 | 来源:发表于2019-12-02 12:10 被阅读0次

自从买了个游戏本当主力开发机以后,一直用的都是Ubuntu18.04系统,开发啥的都很顺畅,毕竟用Linux系统也用了有五六年了,也算是轻车熟路了,但是娱乐性真的是太差了,微信,QQ直接用手机版,Photoshop就有点吃力了(老婆平时P个图老是找我,但是我总以linux不能用PS而拒绝她),虽然网上也有教程使用wine来安装photoshop cc,但是肯定不如win10下用起来丝滑顺畅啊

好吧,其实是我不想浪费游戏本这GTX1660TI的显卡,虽然这显卡也算不上很好,但是拿来玩一下游戏还是很轻松的,吃鸡,使命召唤这些不开高特效,玩起来很流畅

开始正文吧,拿win10做开发系统,那当然少不了WSL(Windows Subsystem for Linux

)了,现在的WSL不像以前刚推出时那么不经蹂躏,现在稳定多了,连WSL2都出来了,那WSL已经趋于稳定的状态了,开搞

安装WSL

如何安装WSL可以参考下面的文章

https://zhuanlan.zhihu.com/p/34885182

网上的教程很多的,按照教程来操作即可

安装完了以后,打开也是很容易的,在PowerShell中,可以输入下面命令进入:

  1. wsl.exe
  2. ubuntu18.04.exe(如果安装的是ubuntu18.04版本)
  3. bash.exe

上面三种方式都可以进入到wsl中

安装各种开发工具

尝试了一下微软最新推出的Terminal,愿景是很好的,但是目前还是BUG很多,建议出稳定版后再使用

下面就是安装各种开发工具

  • Android Studio
  • VS Code
  • Java
  • Golang
  • Nodejs/npm
  • Docker

从各个官网下载安装包,然后安装即可,最好是安装版,这样安装包自动设置好了环境变量,省的自己再手动配置一遍

这中间可能会遇到更新不顺畅的问题,例如Android SDK的更新,gradle的更新等,这时候把Shadowsocks设置为全局代理即可,当然,前提是你得有Shadowsocks才行

安装完各个环境和工具后,其实已经差不多了,剩下的就是各种填坑了

踩坑

安装完各种工具,以及常用软件都没遇到啥问题,后面开始涉及到跟工作相关的操作时,问题就来了

1. wsl中使用串口工具

以前在ubuntu上调试串口的时候,安装的是picocom这款工具

# 设置端口和波特率
sudo picocom -b 1500000 /dev/ttyUSB0</pre>

现在对应的不是/dev/ttyUSBx,而是/dev/ttySx,至于是哪一个,需要判断是哪一个口,如果不知道怎么判断的话,那就一个一个试吧,我试到了第三个就找到了

sudo picocom -b 1500000 /dev/ttyS3</pre>

剩下的就跟linux没啥区别了,如果显示错乱的话,那就在串口中安装resize工具,直接resize一下就好了

2. wsl中adb工具不能发现设备

原因就是因为win10中adb的版本与wsl中adb的版本不一致造成的,一般来说安装windows下的adb都是最新版本的,所以只需要将wsl中的adb更新为最新版即可

# 安装android-tools
sudo apt install adb

# 默认安装位置为 /usr/lib/android-sdk/platform-tools/

# 下载最新版
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip

# 解压缩
unzip ./platform-tools-latest-linux.zip

# 替换
sudo cp -r platform-tools /usr/lib/android-sd</pre>

再次执行 adb devices,就已经可以识别设备了

3. win10中go-sqlcipher的编译

公司一款产品用到了sqlcipher数据库,而后自己又使用golang重写了该产品的服务,所以就涉及到go-sqlcipher的编译了,之前在ubuntu上没啥问题,编译windows版本以及打包windows版本通过使用docker也搞定了,docker中安装gcc-mingw-w64工具以及OpenSSL 1.0.0e for 32-bit MinGW-w64,可以编译windows版本的go-sqlcipher,然后通过wine进行打包,现在即便是windows环境下,docker也还是可以的,所以打包是可以依旧使用docker来做,但是平时的运行调试就不行了,还是得在windows下编译一次才行,绕不过去的坎儿

https://github.com/xeodou/go-sqlcipher/issues/5

这篇文章中有如何编译,但是也不用照搬,照下面的步骤也可以,实质是一样的

Install TDM-GCC-64 安装gcc,这个必须有,要不然无法编译

Install MSYS,Install Perl64bit 之前安装了git for windows,里面的bash工具内置了MSYS,所以说,这一步可以省略了,直接安装一个git for windows即可

Install OpenSSL

如果说自己编译的话,还是得安装Perl64bit,但是编译也只是为了得到相应的lib文件,所以这里直接安装二级制包,这样就可以省略编译这一步骤了

可以到这个链接去下载OpenSSL的二级制包

https://slproweb.com/products/Win32OpenSSL.html

下载完成后,安装很简单,一路下一步就可以搞定

或者直接下载zip包,到这个链接中找一个顺眼的版本

https://wiki.openssl.org/index.php/Binaries

这里选择了1.1.1d,下载openssl-1.1.1d-win64-mingw.zip,解压即可

Copy OpenSSL Resources

按照说明来拷贝文件 copy_openssl_resources.png

我并没有按照上面的操作来拷贝文件,而是

将lib下面所有的文件拷贝到TDM-GCC安装目录对应的lib目录下
将include下面的openssl文件夹拷贝到TDM-GCC对应的include目录下

Compile go-sqlcipher

按上面做法操作一遍以后,执行

go get -u -v github.com/xeodou/go-sqlcipher</pre>

就直接成功了,未出现下面说的这种状况,不过如果遇到的话,按下面的方法操作一遍应该就可以解决

fix_gosqlcipher_bug.png

4. Git换行符LF/CRLF

在win10和wsl以及docker都在使用的时候,git很难不出问题,在wsl中执行add命令时,会出现下面这个问题:

$ git add .
fatal: CRLF would be replaced by LF ...

文本文件所使用的换行符,在不同的系统平台上是不一样的

UNIX/Linux 使用的是 0x0A(LF)
早期的 Mac OS 使用的是 0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了
DOS/Windows 一直使用 0x0D0A(CRLF) 作为换行符

不同的系统下换行符不一样,就导致了上述的问题,git也想到了这一点,提供了几个参数来设置:

autocrlf
true: 提交时转换为LF,检出时转换为CRLF
input: 提交时转换为LF,检出时不转换
false: 提交和检出时均不转换

safecrlf
true: 拒绝提交包含混合换行符的文件
false: 允许提交包含混合换行符的文件
warn: 提交包含混合换行符文件时给予警告

我个人选择了下面的配置

autocrlf false
safecrlf true

即不适用自动转换功能,项目文件使用LF作为换行符,并且拒绝提交混合换行符的文件

这就需要提前将所有CRLF格式的文件全都转换为LF格式,推荐安装下面这个工具:dos2unix

$ git config --global core.autocrlf false
$ git config --global core.safecrlf true

# install dos2unix tool
$ sudo apt install dos2unix

# convert all file to UNIX LF format
$ find . -type f -exec dos2unix {} +

相关文章

  • Win10+WSL开发踩坑记录

    自从买了个游戏本当主力开发机以后,一直用的都是Ubuntu18.04系统,开发啥的都很顺畅,毕竟用Linux系统也...

  • Flutter 开发记录

    Flutter 开发踩坑记录(干货总结)

  • Windows下GithubPages博客快速搭建

    Windows下开发坑总是比较多的,但是本人没Mac,只好踩一遍坑记录下。本文主要是安装过程&踩坑记录,故不对细节...

  • 微信支付 code -2 首查位置推荐

    前言 说到微信相关,相信很多开发者都或多或少的踩过坑,如果没有记录甚至很容易二次踩坑,特此记录,留作纪念 ,嘿嘿...

  • 前端开发踩坑记录

    项目 某电影票务项目(Vue微信公众号项目) 总结:作为离职前的项目整理及今年的立flag产物 电影票务在线售票项...

  • python开发踩坑记录

    1 brine是计算机视觉数据的数据集管理器。可以使用Brine轻松地在Python中安装和加载图像数据集。Bri...

  • Flutter开发 踩坑记录

    前言 最近有时间在研究Flutter开发,从搭建框架(可以参考文章:Flutter基本配置搭建)到开始着手开发De...

  • 微信开发--配置篇

    近段时间在做微信相关开发,因为之前做的笔记丢失,原来踩过的坑又踩了一遍,所以这次准备记录下来,避免以后重复踩坑,本...

  • 2020-10-19随笔 踩坑0传值

    踩坑:当值传入0时,if条件判断时候会自己转换,记录踩坑。

  • 【笔记】一些已解决问题的方法汇总

    记录一下平时解决过的问题以及参考文章,避免踩过的坑重复踩。- -↓ ↓ ↓ windows下vue.js开发环...

网友评论

      本文标题:Win10+WSL开发踩坑记录

      本文链接:https://www.haomeiwen.com/subject/ogixgctx.html