笔者前段时间因为有需求,所以在 Windows10 环境下配置了一波 Linux虚拟机(Ubuntu) 用于开发纯C代码,几周下来遇到了不少问题,借此记录下来分享给大家。
一、起始参考
注:此举是为了等下开启系统的VT,如果不想搞64位的虚拟机,可以忽略
注:开启后才能在 virtualbox 里看见 Linux64 的虚拟机创建选项,同上,不搞64位的话可忽略(不过...如果平时是模拟器用户的话,应该都已经开过VT了吧)
注:开始安装Virtualbox和操作系统,这一步并不难
注:不想用vim或写makefile的话可以考虑考虑
提醒一句
看到不少 git clone 速度太慢的解决办法(即改 Hosts ),实测以及看别人也有提及 ——对虚拟机无效。
所以可以看后续的与pc机之间文件移动的内容,然后在pc机上下好,再移动到虚拟机里。
二、Linux(Ubuntu)操作简要记录
2.1 Ubuntu启动终端快捷键
ctrl+alt+T
注:该快捷键无论在哪里使用,始终路径指向的是主目录
2.2 vim终端多标签页的切换
alt+1 alt+2 alt+3...
注:alt+1表示你要跳转到第一个标签页
2.3 Linux将目录设置为所有人都能读写
2.4 把文件从虚拟机中取出到主机上
要把文件从虚拟机(特指Linux系统)中取出到主机上,一方面是要安装增强功能并勾选虚拟机到主机或双向的拖放功能,一方面是要解锁文件或者目录的权限。例如要对 1.txt 进行 chmod -R o+r+w 1.txt 来让所有人具有读写权限
设置虚拟机与pc机之间的拖动双向后,pc机向虚拟机中拖入文件时,得进入文件夹才能拖入,没办法直接拖到桌面。
2.5 安装工具
一般使用命令的话,如果环境没配置的话,大多数情况下会有提示你使用命令行安装,那么一般可以就跟着提示安装就行了,像GCc、git就是如此(此处特指Ubuntu,其他的没试过不敢肯定)
例如下图,下一条命令只需要输入 sudo apt install g++即可安装 g++
三、C开发环境配置
3.1 GCC发布时间表
注:主要是为了与C/C++的版本大概对应起来
1999 GCC 2.95
2001 GCC 3.0
2002 GCC 3.1
2002 GCC 3.2
2003 GCC 3.3
2004 GCC 3.4.0
2005 GCC 4.0.0
2006 GCC 4.1.0
2007 GCC 4.2.0
2008 GCC 4.3.0
2009 GCC 4.4.0
2010 GCC 4.5.0
2011 GCC 4.6.0
2012 GCC 4.7.0
2013 GCC 4.8.0
2014 GCC 4.9.0
2015 GCC 5.1
2016 GCC 6.1
2017 GCC 7.1
2018 GCC 8.1
2019 GCC 9.1
2020 GCC 10.1
3.2 参考材料
Linux快速搭建C/C++开发环境(CentOs):
Linux平台Makefile文件的编写基础篇(快速学会)
注:第五点有 makefile 的我写的一个小程序的示例,可作为参考
四、C 开发环境配置之 Vim
如果还没安装 vim,可以先随便输入一个 “vim -v” ,自然就会提示你怎么安装vim
推荐阅读:
注:.vimrc 找不到的话,可以在主目录下创建一个 .vimrc 文件,然后在里面写东西,主目录这里的 .vimrc 文件会作为最高优先级被读取,里面的内容就是你想要 vim 具有哪些配置。
我自己用的比较简单(因为刚开始没必要那么精细):
set nocompatible
set number
set autoindent
set smartindent
set showmatch
set ruler
set incsearch
set laststatus=2
set tabstop=4
set shiftwidth=4
set cindent
set nobackup
set autochdir
set clipboard+=unnamed
syntax on
vim命令模式下:
:u 撤销上一步的操作
Ctrl+r 恢复上一步被撤销的操作
Linux vim 非正常退出都会在相应的位置保留 .swp 文件。并且这是隐藏文件,看不见。每次在 vim 的时候就会出现警告信息。注意 swp 文件是隐藏的可以用 ls -a 或者 ls -al查看。怎么删除呢? rm .XXX.swp。注意有个小数点. 不然会提示找不到文件。(但是其实每次警告时就可以输入指令将其删除)
五、Linux 的 C 编程备注
linux 下如果使用 math 头文件中的数学方法时,可能会报找不到方法的错,此时应该在 makefile 的第一个 GCc 处结尾加上 -lm,以连接上数学库
makefile 举例:
client:main.o parseJson.o cJSON.o GCc main.o parseJson.o cJSON.o -o client -lm main.o:main.c parseJson.h GCc -c main.c -o main.o parseJson.o:parseJson.c parseJson.h cJSON.h GCc -c parseJson.c -o parseJson.o cJSON.o:cJSON.c cJSON.h GCc -c cJSON.c -o cJSON.o clean: rm -rf *.o client
六、VSCode 的 deb 方式安装
如果你实在是受不了 vim 了,个人推荐可以改用 VSCode,真的好用,不要问我为什么知道