1.關于底行模式的一個設置
1.1設置行號
這個設置可以讓我們在文本編輯器中書寫的代碼前顯示行號標注。
1.2取消行號
這個操作會恢復到默認設置,不顯示每一行的行號。
2.簡單vim配置
2.1簡單認識
在/etc/目錄下,有一個名為vimrc的文件,這是系統的公共vim配置文件,對所有用戶生效。然而,每個用戶在自己的目錄下可以設置私有的配置,不會影響其他人。要進行配置,我們需要先切換到root目錄,然后使用cd ~命令到達相應目錄。
執行#vim .vimrc#命令打開自己目錄下的配置文件,進行相應的配置。
2.2配置選項
設置語法高亮#syntax on#
顯示行號#set nu#
設置縮進格數為4#set shiftwidth=4#
這里提到的行號設置與前面介紹的行號顯示有何不同?這里的配置會應用于新建的文件,而前面的命令只對當前文件生效。
配置完成后,按照三種模式之間的切換,直接保存退出即可,然后再次進入查看新效果。
2.3其他說明
cd ~表示進入/root目錄。我們在進行配置時需要在/root目錄下操作。當從普通用戶切換回root時,默認位置是root中的zzy(因為切換前就在zzy目錄下,切換后仍在/home/zzy目錄下,這是普通用戶的家目錄,而不是root用戶的家目錄)。要直接切換到root的家目錄,需要在切換命令中使用su – root(注意短杠和root之間有一個空格)。當然,也可以不加短杠,使用cd ~切換到家目錄。
3.庫的引入
3.1背景知識
程序執行的環節包括預處理、編譯、匯編和執行。預處理涉及宏替換、頭文件展開和注釋去除;編譯生成程序的匯編指令;匯編將這些指令轉換為機器可識別的指令;鏈接將庫和目標文件連接起來,因為目標文件本身無法直接執行,需要與庫連接才能執行。
3.2對應指令
展示了4組指令,分別對應上述四個過程。test.c是我們需要運行的程序,test.i是經過預處理后的文件,-E指令讓預處理后停止。生成的預處理文件通常稱為.i文件。
-S指令讓.i文件經過編譯后停止,生成的文件通常使用.s命名。-o指令用于指定生成文件的名稱。
-c指令讓編譯后的文件經過匯編后停止,生成的文件通常是.o文件。gcc用于編譯文件,vim用于查看每個步驟生成的文件內容。.o文件全稱為可重定向目標二進制文件,簡稱目標文件。
3.3相關介紹
c語言中的庫是標準庫,包括靜態庫和動態庫。libc.so中的lib是前綴,.so是后綴,實際名稱只有c,這是庫的命名規則。
系統默認只安裝動態庫,不安裝靜態庫。編譯型語言的安裝包會包含頭文件和庫文件,編譯器才能識別,我們才能使用相關方法。庫將源文件翻譯打包,提供一個文件,隱藏源文件,增強代碼安全性。
頭文件提供方法聲明,庫文件實現方法,加上我們編寫的代碼,就可以形成可執行程序(軟件)。庫的作用是讓我們站在巨人的肩膀上,減少重復工作。
3.4.o文件和庫的鏈接
動態鏈接:動態庫也稱共享庫,一旦動態庫缺失,會影響多個程序的執行。動態庫在程序執行到某步驟時,跳轉到庫中執行無法獨立完成的步驟,因此動態庫一旦消失,許多程序將無法執行。
靜態鏈接:與動態鏈接不同,程序執行到無法獨立完成的步驟時,會將靜態庫中的內容復制到程序中。即使靜態庫消失,程序執行也不會受影響,這是動態庫和靜態庫的區別。
3.5靜態庫的安裝和測試
動態鏈接調用動態庫,靜態鏈接使用靜態庫,需相互匹配,但可以修改默認方式,需額外標注。然而,系統默認只有動態庫,需要手動安裝靜態庫。
C語言靜態庫:
c++靜態庫:
可以在云服務器上安裝這兩個靜態庫。如果不想使用動態庫,可以在后面加上-Static標注,使用自己安裝的靜態庫。
通過ll指令可以看到靜態庫文件較大,因此通常不使用靜態庫,默認使用動態庫即可。
3.6動靜態庫對比
動態庫稱為共享庫,有效節省資源,生成的可執行程序體積小,節省磁盤空間,加載到內存時節省內存,節省網絡空間,但缺點是一旦動態庫缺失,許多程序將無法執行。
靜態庫不依賴外部庫,程序可以獨立執行(因為庫中的文件已復制到程序中),但體積大,消耗資源(內存、網絡空間等)。