Windows Ubuntu 双系统安装注意事项

  1. 最好安装在同一块硬盘上,方便引导
  2. 不能是动态磁盘
  3. 一定要分配/boot分区,200MB就行。不设置的话会导致只有一个系统能起来。(困扰了我半天
  4. 开机黑屏只显示grub之类的是引导坏了,不用着急重装系统。能进BIOS就没事儿,进Live CD联网安装boot-repair修复一下就可以
  5. 修改引导在Windows下用EasyBCD,Linux选NeoSmart Linux,这个都会。Ubuntu下安装Grub Customer自定义一下,免得按两次引导。
  6. 安装nvidia驱动的时候要把nouveau禁用,参考:https://askubuntu.com/questions/841876/how-to-disable-nouveau-kernel-driver
  7. 各种配置都弄好之后安装systemback,创建还原点和iso文件,出问题了直接回滚or重装

从MinGW迁移至Cygwin

0. 原因

MinGW bug太多辣~什么显示不全、乱码等问题都可以通过切换至Cygwin来解决

1. 安装 && 配置

下载:https://cygwin.com/install.html

完成后打开

选安装目录和下载目录什么的可以一路next

然后选择是否使用代理,因为要用国外的镜像站,这里我用了SS/SSR的配置,跟浏览器插件里的配置一样。如果你选择国内镜像站,可以选择直接连接。

选择镜像站点,因为VPS在日本,所以这里我随便选了一个JP的镜像站,速度还不错。试了一下清华的镜像站,有点慢(代理关闭)。

之后观看这个视频,介绍比较详细:How to install Cygwin C/C++ compiler and configure code blocks IDE

大概就是要安装gcc-core,gcc-g++,GDB,make,之后一路next,有connection error的时候retry一下就好啦

如果不在命令行下使用,只在IDE里使用,可以不加环境变量。因为我把带MinGW的git添加到环境变量了,所以怕冲突就没把Cygwin加进去

最后打开 C:\cygwin64\cygwin.bat ,测试一下:

如果配置了环境变量要在cmd里进行上述测试

3. 在CLion中从MinGW迁移至Cygwin

配置编译器:File -> Settings  -> Build, Execution, Deployment -> Toolchains

点“+”号新建,下拉菜单选Cygwin,多等一会儿,会自动检测到。

然后将原来的MinGW配置删除,或者下移,否则默认还是MinGW。

最后,File -> Reload CMake Project(否则会出现Cmake Error: could not load cache)

重新加载时间稍长(CLion真吃配置)

关于换行符

在各操作系统下,文本文件所使用的换行符是不一样的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。Git提供了一个“换行符自动转换”功能。这个功能默认处于“自动模式”,当你在签出文件时,它试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);当你在提交文件时,它又试图将 CRLF 替换为 LF。Git 的“换行符自动转换”功能听起来似乎很智能、很贴心,因为它试图一方面保持仓库内文件的一致性(UNIX 风格),一方面又保证本地文件的兼容性(Windows 风格)。

但是每次diff的时候总是提醒换行符不一样,看着好难受啊

关闭:

或者:

CLion中自动生成的main.cpp是LF,自己新建的文件是CRLF

设置统一:Files -> Settings -> Editor -> Code Styles -> Line separator -> Unix and OS X (\n)

 

其实不跨平台根本没所谓~真矫情~   结论: 不要用Windows (误

解决C++ (CLion && CMake)中‘undefined reference to function’问题

这种问题一般是由于编译顺序不对造成编译器找不到实现文件,但是我用的是CLion自动生成的CMakeList.txt来管理编译,怎么会顺序不对。

我以为是上次没有测试就commit了,然而用git回滚也没有用,后来发现目录下有一个叫CMakeCache.txt的文件,里面存了一堆看不懂的东西,删除之后就好了。

但是CMakeCache.txt为什么会在Project的根目录下呢?不应该待在cmake-build-debug文件夹里吗?

后来才想起来有一次试图在命令行里挑战用裸CMake编译结果失败了的事情(默认还是VS的编译器),可能就是那时候生成了那个版本的CMakeCache.txt,后来也再也没有打开过这个Project,今天要添加新功能的时候发现了问题的不对。

话说git回滚的时候HEAD detach了(HEAD 游离),解决以上问题以后不知道HEAD怎么在指回最新的提交,一气之下重新clone了个新的。

我好蠢啊

获取GitHub Student Pack!

0. 介绍

GitHub 针对学生推出了非常大的优惠:

https://education.github.com/

囊括了一系列看不懂的服务,包括GitHub私有仓库,和DigitalOcean 50美元优惠券

1. 如何申请

在GitHub settings里添加一个edu邮箱并验证

进入 https://education.github.com/

点击“Get the pack”

登陆GitHub账号

选择刚才的edu邮箱,输入学校、毕业年份,申请理由(差不多就行)等信息

等待5个工作日以内审核(我的一天就审核好了)

2. 收到邮件

这时GitHub账户已经自动升级了,其他厂商的优惠在https://education.github.com/pack领取

DigitalOcean的优惠券要联系客服领取

 

Have an Octotastic day!