自从买了个游戏本当主力开发机以后,一直用的都是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中,可以输入下面命令进入:
- wsl.exe
- ubuntu18.04.exe(如果安装的是ubuntu18.04版本)
- 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
按照说明来拷贝文件我并没有按照上面的操作来拷贝文件,而是
将lib下面所有的文件拷贝到TDM-GCC安装目录对应的lib目录下
将include下面的openssl文件夹拷贝到TDM-GCC对应的include目录下
Compile go-sqlcipher
按上面做法操作一遍以后,执行
go get -u -v github.com/xeodou/go-sqlcipher</pre>
就直接成功了,未出现下面说的这种状况,不过如果遇到的话,按下面的方法操作一遍应该就可以解决
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 {} +