1. 程式人生 > >ACM組隊訓練ubuntu環境配置

ACM組隊訓練ubuntu環境配置

每年都指導新生配置ubuntu太麻煩了,留給帖方便大家看吧

首先邀請賽級別以上的比賽都是用ubuntu的,所以我們平時的組隊訓練也十分建議使用ubuntu系統,這裡給出配置過程

解壓之後雙擊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檔案,沒有的話會直接新建

我們在比賽時一般只會用到下面這些命令

<span style="font-family:Courier New;">//
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是字串
//</span>
目前想到的常用的就這麼多,如果有其他的我之後再加吧,這些裡除了Esc以外,都是在非編輯模式下用的,當然還有上下左右我沒寫在裡面

三:程式碼編寫、執行和除錯

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 來關機...

暫時就介紹這麼多,如果發現錯誤望指出