每年都指导新生配置ubuntu太麻烦了,留给帖方便大家看吧
首先邀请赛级别以上的比赛都是用ubuntu的,所以我们平时的组队训练也十分建议使用ubuntu系统,这里给出配置过程
首先是ubuntu 12.04的下载地址:http://pan.baidu.com/s/1kTkcmxD
解压之后双击wubi.exe就可以安装了,像装普通软件一样,最好装在一个空磁盘里,从其他盘分30G出来就够了
注意这个ubuntu是64位的,32位机好像不能装,另外解压之后把原来的压缩包再放进解压后的文件夹里,安装貌似会更快
安装过程很简单,有一个地方是要设置密码的,你们装的时候能搞的定的
安装好了以后是双系统,重启就可以选择系统了,另外本人安装的时候系统环境是windows7,不能保证其他环境安装不会出问题
这里主要说ubuntu安装之后的一些配置问题:
一:相关软件安装
ubuntu下我们一般采用vim编辑 + g++编译 + gdb调试的组合,所以这里介绍怎么安装这些东西,如果你要用codeblocks也类似
ctrl + art + T启动终端,先输入vim看看,如果安装了vim会显示vim的版本信息,当然没装的话就提示找不到了
输入命令 sudo apt-get install vim 然后等他安装完就好了,如果没反应就多试几次,或者再直接vim一下
另外凡是使用sudo权限都会要密码,下面就不再赘述了
同理 sudo apt-get install g++ 可以安装g++,gdb我记得装完g++就有了
其次如果你不习惯自带的浏览器,也可以sudo apt-get install chrome ...你懂的
二:vim 配置
安装完vim之后要对vim做一些配置,不然写代码很蛋疼
终端下输入 vim ~/.vimrc 打开vim配置文件,按 i 进入插入模式,写入以下代码(这里会提到一些vim命令,先用着,后面再详述)
vim可以配置的东西有很多,这里是比较简洁的,因为比赛的时候在现场也要配置这个,太复杂的话你还想不想抢FB了
从上往下的效果依次是:开启语法缩进(大概是这个意思吧- -)、允许使用鼠标(看爱好)、设置使用C++缩进标准、tab为4个空格(所以缩写为set ts = 4)、自动缩进为4个空格(可以缩写为 set sw = 4)、显示行号
写完之后按Esc退出编辑状态 输入 :w 回车保存,然后退出就可以了(点叉就行,正确的姿势是 :q )
比赛时我们一般配置到此就OK了,平时的话还一继续配置一下编辑 - 首选项,改改字体颜色什么的,如下图
二:vim常用命令
在终端下用命令 vim a.cpp 就会用vim打开a.cpp文件,没有的话会直接新建
我们在比赛时一般只会用到下面这些命令
//
Esc //退出编辑模式
i //进入编辑模式,光标停留在当前位置
o //进入编辑模式,在当前行之后新建一行,光标停留在新行行首
dd //删除当前光标所在行,在命令前加数字可以删除多行,如 5dd 将删除从当前行开始向下5行
yy //复制当前光标所在行,在命令前加数字可以复制多行,如 5yy 将复制从当前行开始向下5行
p //把复制的内容粘在当前行下面,大写的P就粘上面
gg //跳到文件第一行
u //撤销
gg=G //规范缩进
:w //保存
:q //退出
:q! //不保存强制退出
:%s/old/new/g //搜索整个文件,将old都替换成new,old和new是字符串
//
三:代码编写、运行和调试
1)代码编写
编写很简单,vim a.cpp就可以开始写了...熟练上面那些命令就可以
例图:
写完保存以后开始测试运行,一般会再开一个终端
PS:这里说的方式是比赛中常用的,不一定符合规范
首先输入命令 g++ a.cpp ,表示用g++ 编译a.cpp文件,如果有编译错误都会给出,啥都不说就是编译成功了
然后输入gdb a.out 指定输出流是a.out,这个a.out是默认的输出流,如果你编译的时候没有指明输出流,这一步一律是a.out,和a.cpp无关
例图:
然后屏幕会输出一堆信息,无视之,再按 r 即可运行 (r = run)
程序运行结束以后还会在gdb界面,再按 r 可以重新运行,如果要退出请按 ctrl + z,强制退出的时候按两次就可以了
2)代码调试
很多时候代码出问题了我们需要调试,需要在编译的时候启动
输入命令 g++ -g a.cpp 表示编译文件并且开启调试
然后还是 gdb a.out,这一步之后要停一下
在gdb这里不要直接r,可以设置断点
输入 b 20 表示在第20行设置断点
输入 b 20 if a = 7 && b = 8 表示当a == 7 && b == 8的时候在第20行断点
设置好了之后就可以 r 了
在断点处有几个常用命令
p 变量名 表示显示一个变量的值,也可以直接p整个数组,或者p多维数组的某一维
p f(x) 这里f是你写的函数,x是传进去的参数,可以查看函数执行结果
c 表示continue ,一直进行到下一个断点
n 逐行执行下一步
watch 变量名 表示监视一个变量的值,一旦发生变化,会给出原值和新值
直接回车 表示重复上一个命令
这些是我常用到的,还有一些其他的命令也可以去网上查,不过一般这些就够了,删除断点啥的我一般都是重来一遍的...
例图:
另外gdb的调试熟悉了是很强大的,但是不推荐太依赖调试,因为比赛时候大多数时间你是要对着打印的代码肉眼调试的
3)O2优化
有的时候想试试极限数据要跑多久,就要开O2优化,不然太慢
方法就是在编译的时候 g++ a.cpp -O2 就可以了,其他的都和正常运行一样
四:解决ubuntu发热严重问题
当你用了一段时间之后会发现电脑出奇的烫,这是因为ubuntu默认开了独显,发挥计算机机智的性能...当然我们打比赛写个代码还不至于切换显卡...
解决方式:
在终端下输入命令
sudo su
echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
表示切换到集成显卡并关闭独显
然后再用命令 sudo gedit /etc/rc.local 打开启动项文件
在exit 0前面把上面那段命令插进去就好了,这样以后启动的时候会直接设置关闭独显
例图:
当然如果你的电脑没有独显就当我没说....
五:无法关机的问题
不知道有没有人和我一样,使用了一段时间以后,用右上角的关机已经关不掉系统了,会玩命的重启
解决方法是在终端下输入命令 sudo init 0 来关机...
暂时就介绍这么多,如果发现错误望指出