Win10+WSL开发踩坑记录

自从买了个游戏本当主力开发机以后,一直用的都是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 {} +

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,841评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,415评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,904评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,051评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,055评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,255评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,729评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,377评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,517评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,420评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,467评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,144评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,735评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,812评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,029评论 1 256
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,528评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,126评论 2 341