初入Linux的一些感想
这半年来没怎么更新东西,原因是这一个学期都在折腾Linux,想着在博客里交代一下自己最近干的事情,以及即将要在博客里写的一些东西
使用Linux的契机
想我一开始使用Linux直接就是使用的虚拟机,而不是使用WSL,作为以C/C++为主要语言的我来说,我发现有太多太多的东西环境硬性要求Linux平台了,逐渐我发现单纯的Windows完全是不可能满足我的需求的。一些比赛和项目促使我使用了Ubuntu
尝试各种发行版
我一开始借由做csapp的几个lab的契机,认识到了linux,并且一开始我使用的发行版也是Ubuntu,但是经过一段时间的使用,我发现Ubuntu是真的容易崩溃,而且让我不满的是,虽然是一个面向搜索引擎的系统,但是其实ubuntu的资料并不是那么的充足,基于lts的ubuntu能搜到的很多都是一些相当过时的资料,当它在搜索引擎里以一大堆和你所问的问题毫无关系的形态展现在你的面前的时候,你还兴高采烈的点进去查看,结果发现,要么版本不对应,要么怎么改镜像源apt install都没这个包,更何况互相抄来抄去的现状,简直太乱了有没有,对于当时需要“菜就多练”的我来说,其实反而就没有那么美好(当然对于现在的我来说,即使是ubuntu也不会像当初一样狼狈了(枯),不管何时使用合适的搜索引擎,合适的网站查找信息都是相当重要的事情)
后来我使用了Debian,作为Ubuntu的祖宗,Debian确实让我省心了不少,Debian的稳定版本如同其名,不过这种稳定完全基于它经过长期验证的软件源,或者换句话来说,它的软件也太老了一点,完全不能满足我的日常使用好不好,现在看来我还是属于激进的,而Debian更加适合用来当server跑服务
后来我换到了ArchLinux,Arch的软件是我用过最丰富最便于获取的,pacman的包管理也是相当好用,除了有一次一不小心把它滚挂了,其他都是不错的体验
就在这篇博客写的这两天(2024.2.10),我正在构建Linux From Scratch,从中我学会了交叉编译,个人感觉整个过程还是挺有意思的,首先是搭建一个交叉编译的环境,这个过程需要我们以一种自举的方式去获得在目标机器上完整的gcc功能。然后一个一个包从源码编译,搭建起最基本的系统应用。chroot(change root directory)进系统之后,接着完成基本应用的搭建,直到最后通过配置内核选项进行内核裁剪,手动配置Grub2,整体的过程都让我学到了不少
经验的积累
就我个人而言,我至今为止使用linux的都在于我经验的积累,比如了解到各种各样的工具,arch wiki和周围的朋友们为我提供了许多的帮助。
我觉得首先你得了解linux底下那些系统级的基础软件,像gcc,binutils两个与我主要研究的c/c++相关的自不必说,还要熟悉vim,nano等相关的文本编辑器,还有例如archlinux要学会自己打快照。
没有社区环境等的帮助,了解这些相关的软件其实也是很缓慢的过程,作为从常年用Windows转到使用linux,本身就是跳出了舒适圈,要接受一定的考验
长期使用linux作为开发环境后
在包管理,cmake等的帮助下,c/c++的开发确实变得容易很多,而且linux api也更加容易调用,能搜到的资料也会变多,这都是开源带给我的。正式学习两年c++,也使过不少其他语言,我现在看来,对于真正要做什么的场景,也许把复杂性完整的展现出来更加有利于我们真正的习得有用的东西,而不是一味的逃避,一味的封装