1、計算機系統與連接git
a.文件是對I/O設備的抽象;
b.虛擬存儲器是對主存和磁盤的抽象;
c.進程是對處理器、主存和I/O設備的抽象。程序員
網絡提供了計算機系統之間通訊的手段ubuntu
靜態連接器主要任務:符號解析、重定位vim
a.由m定義並能被其餘模塊引用的全局符號
b.由其餘模塊定義並被模塊m引用的全局符號
c.只被模塊m定義和引用的本地符號安全
2、Vim編輯器服務器
VIMTUTOR是個實踐教程,經過實踐30分鐘讓你對VIM編輯器入門,只要在命令行中輸入vimtutor,而後跟着教程練習就能夠了~網絡
1.通常操做
Vim能夠僅僅經過鍵盤在任意模式之中進行切換,這就使得Vim能夠不用進行菜單或者鼠標操做,使文字錄入員或者程序員能夠大大加強速度和效率。vim有6種基本模式(經常使用的是普通模式、插入模式和命令行模式):併發
2.三種經常使用模式的切換:app
3.進入vim:ssh
4.遊標移動(在普通模式下,按Esc進入普通模式):
按鍵 | 說明 |
h | 左 |
i | 右 |
j | 下 |
k | 上 |
w | 移動到下一個單詞 |
b | 移動到上一個單詞 |
命令行模式下保存文檔:從普通模式輸入:
進入命令行模式,輸入w
回車,保存文檔。輸入:w
文件名能夠將文檔另存爲其餘文件名或存到其它路徑下。
退出vim(經常使用):
a.命令行模式下退出vim:從普通模式輸入:
進入命令行模式,輸入wq
回車,保存並退出編輯。
b.普通模式下退出vim:普通模式下輸入Shift+zz便可保存退出vim。
a.使用命令進行快速調整縮進操做:通模式下輸入15G
,跳轉到15行;普通模式下輸入>>
整行將向右縮進(使用,用於格式化代碼超爽);普通模式下輸入<<
整行向左回退;普通模式下輸入:
進入命令行模式下對shiftwidth
值進行設置能夠控制縮進和回退的字符數。
b.shiftwidth
命令:shiftwidth
命令是指>>
命令產生的縮進(能夠簡寫成sw) 普通模式下輸入:
進入命令行模式;對shiftwidth
值進行設置能夠控制縮進和回退的字符數。 獲取目前的設定值:set shiftwidth?
;設置縮進爲10個字符:set shiftwidth=10
。
a.命令行模式下輸入:ce
(center)命令使本行內容居中
b.命令行模式下輸入:ri
(right)命令使本行文本靠右
c.命令行模式下輸入:le
(left)命令使本行內容靠左
a.普通模式下輸入/
向下查找,輸入?
向上查找,n
表示繼續查找,N
反向查找。
b.普通模式下輸入\*
尋找遊標所在處的單詞
c.普通模式下輸入\#
同上,但\*
是向前(上)找,#
則是向後(下)找
d.普通模式下輸入g\*
同\*
,但部分符合該單詞便可
e.普通模式下輸入g\#
同\#
,但部分符合該單詞便可
a.編輯多個文件有兩種形式:一種是在進入vim前使用的參數就是多個文件;另外一種就是進入vim後再編輯其餘的文件。同時建立兩個新文件並編輯$ vim 1.txt 2.txt
b.默認進入1.txt
文件的編輯界面:命令行模式下輸入:n
編輯2.txt
文件,能夠加!
即:n!
強制切換,以前一個文件的輸入沒有保存,僅僅切換到另外一個文件;命令行模式下輸入:N
編輯1.txt
文件,能夠加!
即:N!
強制切換,以前文件內的輸入沒有保存,僅僅是切換到另外一個文件。
a.命令行模式下輸入:e 3.txt
打開新文件3.txt
b.命令行模式下輸入:e#
回到前一個文件
c.命令行模式下輸入:ls
能夠列出之前編輯過的文檔
d.命令行模式下輸入:b 2.txt
(或者編號)能夠直接進入文件2.txt編輯
e.命令行模式下輸入:bd 2.txt
(或者編號)能夠刪除之前編輯過的列表中的文件項目
f.命令行模式下輸入:e! 4.txt
,新打開文件4.txt,放棄正在編輯的文件
g.命令行模式下輸入:f
顯示正在編輯的文件名
h.命令行模式下輸入:f new.txt
,改變正在編輯的文件名字爲new.txt
恢復文件:vim -r
進入文檔後,輸入:ewcover 1.txt
來恢復。
建立加密文檔:$ vim -x file1
3、GCC的使用
1.gcc 編譯程序的流程:
gcc –E cxy.c –o cxy.i
;gcc –E
調用cpp,產生預處理過的C原始程序gcc –S cxy.i –o cxy.s
;gcc –S
調用ccl,產生彙編語言原始程序gcc –c cxy.s –o cxy.o
;gcc -c
調用as,產生目標文件gcc cxy.o –o cxy
;gcc -o
調用ld,產生可執行文件./cxy
2.庫選項:-static
(進行靜態編譯,即連接靜態庫、禁止使用動態庫)、-shared
(生成動態庫文件、進行動態編譯,在沒有動態庫時纔會連接同名靜態庫)、-L dir
(在庫文件的搜索路徑列表中添加dir目錄)、-lname
、-fPIC
(生成使用相對地址的位置無關的目標代碼,而後使用gcc的-static
選項從該PIC目標文件生成動態庫文件)
3.靜態庫是一系列的目標文件(.o文件)的歸檔文件((lib+name).a文件);連接階段,選擇靜態庫,後綴名爲「.a」,選擇動態庫,後綴名爲「.so」。
gcc -c 文件名.c
ar rcsv libxxx.a xxx.o
;gcc -o 文件名
文件名.c -L. -lxxx
//連接到靜態庫;
4.共享庫的生成:gcc -fPIC -c xxx.c
gcc -shared -olibxxx.so xxx.o
;共享庫的使用:gcc -o main main.c -L. -lxxx
5.註冊共享庫的方法:
4、GDB的使用
程序的運行狀態有「運行」、「暫停」、「中止「三種。
主要操做:
查看文件:l
b
後加入相對應的行號。例b 6
info b
,在gdb中能夠設置多個斷點。bt
查詢調用函數的狀況r
;r
+行號:從該行號開始運行p
變量。例:p n
n
或s
,s
會進入函數,n
不會進入函數c
h
b 文件名.c:函數名
b 行數
b 行數 if 表達式
(例如:b 9 if == 12)tb [文件名:]行號或函數名 <條件表達式>
5、MakeFile的使用
makefile
定義了一系列的規則來指定,哪些文件須要先編譯,哪些文件須要後編譯,哪些文件須要從新編譯,甚至進行更復雜的功能操做。其帶來的好處就是——「自動化編譯」,一但寫好,只須要一個make
命令,整個工程徹底編譯,極大的提升了軟件的開發效率。makefile
文件編寫規則:a.目標文件:由make建立,一般是目標文件或可執行文件
b.依賴文件:建立目標體所依賴的文件
c.運行命令:建立每一個目標體時須要的運行命令,必須以tab鍵開頭
d.格式爲:目標文件:依賴文件列表
[tab鍵]各目標體運行命令
(注意不是空格)
e.使用make的格式:make 目標文件
a.遞歸展開方式:在引用該變量時進行替換(不能用於引用本身的狀況),缺點:不能在變量後追加內容
b.格式定義:VAR = var
c.展開方式:在定義處展開,並只展開一次。優勢:消除變量的嵌套引用
d.格式定義:VAR := var
e.make中變量的使用格式: $(變量名)
f.變量名的命名:不包括「:」、「#」、「=」以及結尾空格的任何字符串;變量名大小寫不敏感
1.進行GDB調試時,出現錯誤!
緣由及解決:緣由是生成的二進制可執行文件沒有使用-g選項。
gcc中-g選項是爲了得到有關調試信息,要用gdb進行調試,必須使用-g生成二進制可執行文件!
2.裝git的過程當中(生成公鑰時),當使用命令cd ~/.ssh
進入~/.ssh
文件夾,輸入gedit id_rsa.pub
打開id_rsa.pub
文件,發現裏面是空白的,沒有內容。
後來發現是輸入 cd ~/.ssh 時出現了錯誤,「/」符號與「.」符號之間我多輸入了一個空格字符。解決問題後,效果以下:
3.最後git push -u origin master的時候,命令行要求輸入username,我混淆了概念,我一直輸入的是「20145326蔡馨熠」,因此出不來結果,應該是登陸時用的帳號!
4.在本身的虛擬機上用makefile的時候,會出現「XXX is up to date」的問題。網上說好像用.PHONY來解決,我沒搞懂。
先要在Ubantu中安裝git,使用命令: sudo apt-get install git
其次是設置用戶名和用戶郵箱,也就是本身在Git@OSC上註冊的帳號。
用git config --global user.name "xxx" git config --global user.email "xxx"
而後在ubuntu下生成公鑰(id_rsa是私有祕鑰,is_rsa.pub是公鑰)
ssh-keygen -t rsa -C "413741392@qq.com"
建立完公鑰後,須要上傳。使用命令 cd ~/.ssh
進入~/.ssh
文件夾,輸入gedit id_rsa.pub
打開id_rsa.pub
文件,複製其中全部內容。接着訪問http://git.oschina.net/key網頁,標題欄能夠隨意輸入,公鑰欄把你剛纔複製的內容粘貼進去就OK了。
能夠測試是否連通:
ssh -T git@git.oschina.net
按照提示操做,若是聯通,則出現以下信息:
Welcome to Git@OSC, 20145326蔡馨熠!
在ubuntu下新建一個文件夾 gitcode,而後cd到該文件夾下,把一些文件拷貝到該目錄下。
mkdir gitcode
cd gitcode
接下來執行以下命令:
git init(初始化倉庫)
git add .(這個點表明該目錄下的全部文件)
git commit -m 「20145326cxy」
此時工程中的全部文件都以提交到HEAD,可是尚未提交到服務器。
如今能夠將代碼提交到Git@OSC倉庫了
先在Git@OSC項目中添加一個遠程倉庫origin
git remote add origin https://git.oschina.net/cxy368/caixinyi20145326.git
如今把本地項目master 分支推送到origin倉庫
git push -u origin master
統計代碼行數
心得體會
本週主要的學習內容就是vim,gcc,gdb以及makefile還有git的安裝。其中,vim的使用方法重點在於練習,只有通過不斷地練習才能熟練掌握並使用。gcc、gdb和makefile的使用方法有必定的命令格式和規則,只要遵循其規則格式就可以簡單編譯、運行、調試程序。計算機系統的相關知識重點在於記憶和理解,連接裏面的用語有些生疏,一會兒並不能徹底理解,還須要再仔細看看並理解。由於本身電腦上的虛擬機特別卡,因此有時候會用實驗樓環境,不過實驗樓環境有時候沒有注意操做的時間,會被強退掉,以前數據也會所有丟失,我就是由於這個緣由,有一部分的代碼敲在實驗樓裏,沒有及時託管,被「吃掉」了,這很尷尬。這周沒有安排好時間,把知識都堆在了週末來學,因此感受任務不少,壓力很大,git的知識也忘了不少,因此一開始整我的很壓抑,效率也不高,可是又不想敷衍本身,因而在調整了本身的狀態後,一步一步,循序漸進的開始了個人學習任務,只求質量,不求數量。我仔細看了實驗樓裏的資料和書上的知識點後,開始動手操做,熟悉vim,gcc,gdb,makefile的相關用法,其實還算簡單,由於給的例子特別生動形象,只須要熟記指令及用法,就沒什麼大問題。安裝git的時候雖然中途也有不少問題,但都仍是一一克服了,挺有成就感的,由於從頭至尾都是靠的本身,這也算是學習的一種樂趣吧~我以爲,首先心必定要靜下來,這將決定學習的質量,而後時間上要安排好,不要趕進度,要追求質量!提升本身的學習效率,千萬不要敷衍!否則最終害的是本身,後面想補都補不回來。一開始就要贏在起跑線。這學期的課程仍是婁老師給咱們上,雖然平時要求嚴,不過相比上學期我以爲輕鬆多了,由於婁老師在課上講的東西更多了,只要認真聽,仔細作筆記,就會學得很輕鬆~ 我會再接再礪,盡最大努力將這門課學好~
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 1/2 | 20/20 | |
第二週 | 58/58 | 1/3 | 20/40 |