跳轉到檔案首
gg(命令模式)
游標移至行首:
游標移至行尾:
自動格式化程式
大括號對應
跳轉至man手冊:
將游標置於待檢視函式單詞上,用nk(n是第幾卷)
刪除乙個單詞
刪除游標至行尾
刪除游標至行首
刪除指定區域:
按v(命令模式)切換為「可視模式」,選中要刪除的區域,按d刪除
刪除指定一行
在游標所在行,按dd
刪除多行
ndd
複製一行
yy(命令模式)
p貼上(游標所在下一行)
p(貼上)(游標所在上一行)
末行模式下按「/」輸入要查詢的單詞 回車 n下乙個
命令模式下,將游標置於單詞任意乙個字元上,按「*」或"#"
撤銷 u
反撤銷 ctrl+r
顯式行號 :set number
末行模式 sp +回車(橫屏) 切屏:ctrl+ww
末行模式 vsp+回車(豎屏) 切屏:ctrl+ww
:!命令 :!ls-l
1.預處理(gcc -e):展開巨集,標頭檔案,替換條件編譯,刪除注釋,空行,空白
2.編譯(gcc -s):檢查語法規範【消耗時間,系統資源最多】
3.彙編(gcc -c):將彙編指令翻譯成機器指令
hello.c---預處理-->hello.i----編譯---->hello.s-----彙編------>hello.o-----鏈結------>a.out
-i 指定標頭檔案所在目錄位置
-c 只做預處理,編譯,彙編。得到 二進位制檔案!(.o檔案)
-g 編譯時新增除錯檔案。主要支援gdb除錯
-on n=0~3;編譯優化,優化等級(預設2級),n越大優化越多
-wall 顯式所有警告資訊
-d 向程式中,「動態」註冊巨集定義
-l 指定庫位置
靜態庫:對空間要求較低,而時間要求較高
共享庫:對空間要求較高,而時間要求較低
1.將 .c生成 .o檔案
gcc -c add.c -o add.o
2.使用ar工具生成靜態庫
ar rcs libmylib.a file1.o
3.編譯靜態庫到可執行檔案中
gcc test.c lib庫名.a -o a.out
1.將.c生成.o檔案(生成與位置無關的** -fpic)
gcc -c add.c -o add.o -fpic
2.使用 gcc -shared 製作動態庫(.so檔案)
gcc -shared -o lib庫名.so add.o sub.o
3.編譯可執行程式時,指定所使用的動態庫。-l:指定庫名(去掉lib字首和.so字尾),-l:指定庫路徑
gcc test.c -o a.out -l mymath -l ./lib
4.執行可執行程式 ./a.out出錯
* 原因:
鏈結器 工作於鏈結階段,工作時需要 -l和-l
動態鏈結器 工作於層序執行階段,工作時需要提供動態庫所在目錄位置
通過環境變數改變:export ld_library_path=動態庫路徑
永久生效:寫入 終端配置檔案。 .bashrc
1)vi ~./bashrc
2)寫入export ld_library_path=動態庫路徑
3). .bashrc/ source .bashrc /重啟 終端----->讓修改後的.bashrc生效 *
修改/etc/ld.so.conf
1.sudo vi /etc/ld.so.conf
2.新增你的共享庫路徑
3.更新查詢共享庫的路徑
sudo ldconfig -v
4.測試程式可否找到共享庫
ldd a.out
擴充套件——資料段合併(鏈結時合併)
【好像我記得上面的步驟有問題,下次使用記得的再補充】
-g :使用該引數編譯可執行檔案,得到除錯表
gdb a.out
list:list 1 列出原始碼。根據原始碼指定 行號設定斷點
b: b 20 在20行設定斷點
r: 執行程式
p: 檢視變數的值
continue:繼續執行斷點後續指令
quit:退出gdb當前除錯
finish:結束當前函式呼叫
出現段錯誤,解決方法:
run:使用run查詢段錯誤位置
set args:設定main函式命令列引數
run 字串1 字串2 ...:設定main函式命令列引數
info b:檢視斷點資訊表
b 20 if i=5:設定條件斷點
ptype:檢視變數型別
bt:列出當前程式正存活著的棧幀(形參和區域性變數都在棧幀上)
frame:根據棧幀編號進行切換
display:跟蹤變數值,undisplay 取消跟蹤
set follow-fork-mode child 命令設定gdb在fork之後跟蹤程序
set follow-fork-mode parent 設定跟蹤父程序
命名:makefile makefile ------make命令
1個規則:
目標:依賴條件
(乙個tab縮排)命令
all:指定makefile的終極目標
2個函式:
src=$(wildcard *.c)
找到當前目錄下所有字尾為.c的檔案,賦值給src(src=add.c sub.c div.c)
obj=$(patsubst %.c,%.o,$(src))
將引數3中,包含引數1的部分,替換為引數2(obj=add.o sub.o div.o)
clean:(沒有依賴)
-rm -rf $(obj) a.out
「-」作用是:刪除不存在檔案時,不報錯。順序執行結束
3個自動變數
$@:在規則的命令中,表示規則中的目標
$<:在規則的命令中,表示第乙個依賴條件。如果將該變數應用在模式規則中,它可將依賴條件列表中的依賴一次取出,套用模式規則
$^:表示規則中的所有條件,組成乙個列表,以空格隔開,如果這個列表中有重複的規則消除重複項
模式規則:
%.o:%.c
gcc -c $< -o $@
靜態模式規則:
$(obj):%.o:%.c
偽目標:
.phony:clean all
引數:
-n : 模擬執行make,make clean命令
-f: 指定檔案執行make命令
Python學習筆記 day0
本部落格標題設計敏感關鍵字0day,違反相關法律法規,現已處理。1.輸入 raw input 這個可以輸入一行。和c 不同,它不能讀取單個整數 我的意思是,它是以字串儲存的。所以沒有什麼諸如 d這種東西。name raw input 這樣就可以讀入乙個字串,相當於gets name 考慮到人性化設計...
前端學習筆記 day0
utf 8 萬國碼 開發時我們使用的字符集都是utf 8 gb2312 國標 通過meta標籤設定網頁字符集,避免亂碼問題。此處為設定字符集,避免亂碼 用來設定網頁的元資料,底層資料,網頁的屬性。元資料不是給使用者看的 它是自結束標籤 常用的屬性 name指定資料的名稱 content指定資料的內容...
讀書筆記 DAY0 入門
作為一門程式語言,必然有其不足,python的缺陷體現在以下兩個方面 python安裝包提供的直譯器為用c語言開發的cpython,命令列提示符視窗執行python就是啟動該直譯器,其他直譯器有ipython pypy jython ironpython等。所謂直譯器,就是執行程式時,將程式一條一天...