學習計時:共xxx小時html 讀書:linux 代碼:shell 做業:編程 博客:vim |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1、學習目標安全 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. 熟悉Linux系統下的開發環境 2. 熟悉vi的基本操做 3. 熟悉gcc編譯器的基本原理 4. 熟練使用gcc編譯器的經常使用選項 5 .熟練使用gdb調試技術 6. 熟悉makefile基本原理及語法規範 7. 掌握靜態庫和動態庫的生成 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2、學習資源併發 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. 教材:第一章,第七章app 2. 《嵌入式Linux應用程序開發標準教程》第三章3.1-3.5編輯器 3. 課程資料:https://www.shiyanlou.com/courses/413 實驗二,課程邀請碼:W7FQKW4Y函數 4. Vim編輯器:https://www.shiyanlou.com/courses/2 5. Linxu系統編程:https://www.shiyanlou.com/courses/24,實驗二、三、4 6. 教學視頻:http://pan.baidu.com/s/1kTHxOFl ,能夠參考第十個視頻 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3、學習方法 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. 進度很重要:必須跟上每週的進度,閱讀,練習,問答,項目。我會認真對待每一位同窗,請你不要由於困難半途而廢。
2. 問答很重要:遇到知識難點請多多提問,這是你的權利更是您對本身負責的義務。問答到博客園討論小組:http://group.cnblogs.com/103791/
3. 實踐很重要:解決書中習題,實踐書中實例,完成每週項目,纔算真的消化了這本好書。經過實驗樓環境或本身安裝的虛擬機在實踐中進行學習
4. 實驗報告很重要:詳細記錄你完成項目任務的思路,得到老師點評和幫助本身複習。學習完成後在博客園中(http://www.cnblogs.com/)把學習過程經過博客發表,博客標題「信息安全系統設計基礎第二週學習總結」
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4、學習任務 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(提示:請將要求學生完成的任務、測驗或思考題列在此處) 1.教材第一章,第七章學習:閱讀並消化教材內容(有部分考試內容) 2.《嵌入式Linux應用程序開發標準教程》第三章3.1-3.5的學習(本週大部分考試內容都從這出,特別是與教材重複內容) 3.完成實驗併發Blog
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5、後續學習預告(可選): |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教材第二章《信息的表示和處理》 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6、學習過程 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(提示:此處由學生填寫,學習過程,學習筆記,代碼編譯,運行結果,思考等) 1. 重要知識點總結梳理: vim部分 一、Vim的6種基本模式:
經常使用的是普通模式、插入模式和命令行模式。 2.三種經常使用模式的切換1)vim啓動進入普通模式; 2)處於插入模式或命令行模式時只須要按Esc或者Ctrl+[便可進入普通模式; 3)普通模式中按i(插入)或a(附加)鍵均可以進入插入模式; 4)普通模式中按:進入命令行模式; 5)命令行模式中輸入wq回車後保存並退出vim。 三、進入vim 1)在終端中輸入 vim 文件名; 2)在終端中輸入vim,進入vim界面中,進入命令行模式輸入:e 文件路徑(文件名)。
四、遊標移動在普通模式下,有如下規則:
五、進入插入模式 在普通模式下使用下面的鍵將進入插入模式,並能夠從相應的位置開始輸入
六、命令行模式下保存文檔從普通模式輸入:進入命令行模式,輸入w回車,保存文檔。輸入:w 文件名能夠將文檔另存爲其餘文件名或存到其它路徑下 七、退出vim1)命令行模式下退出vim從普通模式輸入:進入命令行模式,輸入wq回車,保存並退出編輯 如下爲其它幾種退出方式:
2)普通模式下退出vim普通模式下輸入Shift+zz便可保存退出vim 八、刪除文本1)普通模式下刪除vim文本信息進入普通模式,使用下列命令能夠進行文本快速刪除:
九、字符的替換及撤銷(Undo操做)1)替換和撤銷(Undo)命令替換和Undo命令都是針對普通模式下的操做
十、快速縮進1)使用命令進行快速調整縮進操做縮進操做均在普通模式下有效
2)shiftwidth命令shiftwidth命令是指>>命令產生的縮進(能夠簡寫成sw) 普通模式下輸入:進入命令行模式 對shiftwidth值進行設置能夠控制縮進和回退的字符數。 獲取目前的設定值:set shiftwidth? ;設置縮進爲10個字符:set shiftwidth=10 十一、調整文本位置命令行模式下輸入:ce(center)命令使本行內容居中 :ce 命令行模式下輸入:ri(right)命令使本行文本靠右 :ri 命令行模式下輸入:le(left)命令使本行內容靠左 :le 十二、查找1)快速查找普通模式下輸入/向下查找,輸入?向上查找,n表示繼續查找,N反向查找。 2)高級查找
1三、多文件編輯1)使用vim編輯多個文件編輯多個文件有兩種形式:一種是在進入vim前使用的參數就是多個文件;另外一種就是進入vim後再編輯其餘的文件。 同時建立兩個新文件並編輯 $ vim 1.txt 2.txt 默認進入1.txt文件的編輯界面 $ vim -r 1.txt
2)進入vim後打開新文件
3)恢復文件若是由於斷電等緣由形成文檔沒有保存,能夠採用恢復方式,vim -r進入文檔後,輸入:ewcover 1.txt來恢復 1四、可視模式
1五、視窗操做打開多個窗口進行編輯:在命令行模式下輸入:new 下述列舉的多種方法也能夠在命令模式或普通模式下打開新的視窗:
1六、建立加密文檔: $ vim -x file11七、在vim執行外部命令在命令行模式中輸入!能夠執行外部的shell命令
1八、vim中的查看幫助
1九、功能設定1)vim的功能設定要永久保存配置須要修改vim配置文件。 vim的配置文件~/.vimrc,能夠打開文件進行修改. 2.獲取目前的設定
3.set功能的說明
linux下c編程基礎部分 一、C語言的特色 1)中級語言 2)結構化 3)功能齊全 4)可移植性強 二、linux下C語言的編程環境 1)vim編輯器:編寫代碼 2)gcc編譯連接器:編譯程序
注意:gcc的通常格式爲:gcc [選項] 要編譯的文件 [選項] [目標文件],其中,目標文件可默認,gcc默認生成可執行的文件,名爲編譯文件.out. (1)gcc編譯經常使用選項:-E(只預編譯)、-S(只編譯不彙編)、-o(將file文件指定爲輸出文件)、-c(只編譯不連接)、 -I dir(在頭文件的搜索路徑列表中添加dir目錄)、-g(在可執行程序中包含標準調試信息) 庫選項:-static(進行靜態編譯,即連接靜態庫、禁止使用動態庫)、-shared(生成動態庫文件、進行動態編譯,在沒有動態庫時纔會連接同名靜態庫) -L dir (在庫文件的搜索路徑列表中添加dir目錄)、-lname、-fPIC(生成使用相對地址的位置無關的目標代碼,而後使用gcc的-static選項從該PIC目標文件生成動態庫文件) (2)靜態庫是一系列的目標文件(.o文件)的歸檔文件((lib+name).a文件);連接階段,選擇靜態庫,後綴名爲「.a」,選擇動態庫,後綴名爲「.so」 (3)靜態連接庫的生成: gcc -c 文件名.c ar rcsv libxxx.a xxx.o 靜態庫的使用: gcc -o 文件名 文件名.c -L. -lxxx //連接到靜態庫 注意:-L :在庫文件的搜索路徑列表中添加dir目錄 -l : 在頭文件的搜索路徑列表中添加dir目錄 (3)共享庫的生成 gcc -fPIC -c xxx.c gcc -shared -o libxxx.so xxx.o 共享庫的使用:gcc -o main main.c -L. -lxxx (4)註冊共享庫的方法 a、修改/etc/ld.so.conf文件 b、修改LD_LIBRARY_PATH環境變量 c、將庫文件直接複製到/lib或者/usr/lib目錄下: cp (lib+name).so /lib (5)gcc警告和出錯選項列表 -w(關閉全部告警)、-Wall(容許發出gcc提供的全部有用的報警信息)、-werror(把全部的告警信息轉化爲錯誤信息,並在告警發生時終止編譯過程) 3)gdb調試器:調試代碼 (1)使用流程
注意:程序的運行狀態有「運行」、「暫停」、「中止「三種。 (2)基本命令:help 主要命令: 工做環境相關命令 設置斷點與恢復命令 源碼查看相關命令 查看運行數據相關命令 修改運行參數相關命令 (3)斷點的設置 函數:b 文件名.c:函數名 行:b 行數 條件:b 行數 if 表達式(b 8 if == 10) 臨時:tb [文件名:]行號或函數名 <條件表達式> 4)make項目管理器:識別文件代碼是否更新,減小編譯工做量 原理:make工程管理器又名「自動編譯管理器」,它能夠根據文件時間戳自動發現更新過的文件而減小編譯工做量,可以讀入makefile文件的內容來執行編譯工做。編譯分爲編譯、彙編、連接階段,其中編譯階段僅檢查語法錯誤以及函數與變量是否被正確聲明;連接階段主要完成函數連接和全局變量的連接。 (1)makefile文件的編寫規則 格式爲: 目標體:依賴文件 [tab鍵]各目標體運行命令 目標體:由make建立,一般是目標文件或可執行文件 依賴文件:建立目標體所依賴的文件 運行命令:建立每一個目標體時須要的運行命令,必須以tab鍵開頭。 使用make的格式:make 目標體 (2)makefile變量的定義 遞歸展開方式:在引用該變量時進行替換(不能用於引用本身的狀況),缺點:不能在變量後追加內容。 格式定義:VAR = var 展開方式:在定義處展開,並只展開一次。優勢:消除變量的嵌套引用。 格式定義:VAR := var make中變量的使用格式: $(變量名) 變量名的命名:不包括「:」、「#」、「=」以及結尾空格的任何字符串;變量名大小寫不敏感。 變量分類:用戶自定義變量、預約義變量、自動變量及環境變量。 (3)makefile規則 隱含規則 模式規則 2. 教材代碼編譯運行 gdb的練習 3. 課後做業 (1)練習代碼 gcc編譯過程圖(靜態庫的建立) gcc編譯過程圖(動態庫的建立) gcc編譯過程圖(運行結果) make實現上述代碼的靜態庫使用自動化 make實現上述代碼的動態庫使用自動化 makefile文件爲: (2)gdb調試過程練習例子
(3)make實現使用自動化的例子
參考資料:(參考論文、圖書、網站、同窗的內容必定要進行標註,不然以做弊論處,本次做業判0,三次以上的以課程考試做做弊論,並在立此存照(http://www.cnblogs.com/rocedu/p/4795939.html)中曝光) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7、遇到的問題及解決 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(提示:此處由學生填寫,是重要的得分點,要寫出遇到的問題和解決方案以及對出現問題的思考) vim學習部分 一、行內跳轉:普通模式下使用下列命令在行內按照單詞爲單位進行跳轉,如下操做不能實現功能:
二、問題如圖,沒法實現該操做的練習:
三、問題如圖,沒法實現該操做的練習:
四、編譯做業中要求編譯的代碼,出現錯誤,找不到頭文件,如圖所示: 錯誤緣由:由於對圖片的理解錯誤,直接將圖片內容寫入了同一個文件中。 五、gdb設置斷點,沒有效果,問題如圖。 六、不會畫依賴圖
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8、其餘 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(提示:此處由學生填寫,靈感,領悟等) |