Linux 複習筆記
Linux 常用基本命令:
檔案 —— cp rm mv tail mv more find grep
程序 —— ps kill jobs top
管理 —— useradd userdel passwd shutdown init halt reboot
網路 —— ping tcpdump netstat
/*************************************************************************************/
目錄結構:
/boot 系統啟動所需檔案、核心檔案
/etc 系統配置
/bin 二進位制可執行檔案
/lib 庫檔案
/mnt 臨時掛載點
/dev 裝置檔案
/home 普通使用者家目錄
/root 管理員目錄
/proc 虛擬檔案系統、程序資訊
/*************************************************************************************/
檔案型別:
- 普通檔案
d 目錄檔案
l 符號連結(類似快捷方式)
b 塊裝置檔案 / 二進位制檔案
c 字元裝置檔案
p 命名管道檔案
s 套接字檔案
改變檔案許可權 chmod r(4) w(2) x(1)
chmod u+x file
chmod 777 file
/*************************************************************************************/
gcc / g++:
工具集合的入口,其中會呼叫其他工具
編譯 .c 檔案
以 gcc 編譯 -- 按照C語言編譯(以 nm 檢視邏輯地址偏移量,函式簽名為函式名)
以 g++編譯 -- 按照Cpp編譯(函式簽名為_Z3addii)
編譯 .cpp 檔案以 gcc 編譯 -- 按照 Cpp 解析(產生連結錯誤,因為 gcc 不會主動連結c++標準庫,需要手動指定)
以 g++ 編譯 -- 按照 Cpp 解析,通過 ldd 命令檢視所依賴的庫
/* gcc不僅僅能編譯 .c 檔案,同時也能編譯 .cpp 檔案;但C與C++混合編譯時應該使用 g++ 來連結,否則會因為C和C++的編譯連結符號不同而連結失敗 */
/*****************************************************1********************************/
gdb除錯:
l 列出程式碼
s 進入函式
finish 跳出
n 執行下一步
b 設定斷點
p/display 檢視變數
x 檢視記憶體
例:x/<n/f/u> <addr>
n表示顯示記憶體的長度——即當前地址向後顯示幾個地址的長度;
f表示顯示的格式——字串s、十六進位制x、十進位制d;
u表示將多少位元組當做一個值取出來——預設4byte,b單位元組、h雙位元組、w四位元組、g八位元組
core除錯(檢視函式崩潰點 / 段錯誤)
ulimit -c ulimited 將core檔案大小設為無限大
bt 檢視函式呼叫棧
/*************************************************************************************/
庫:
* 預先編譯好的方法的集合
共享庫(動態庫):
gcc -shared -fPIC -o add.o
執行程式中動態裝載庫,呼叫其中的方法
靜態庫:
ar crv libadd.a add.o
編譯完成後將庫中包含的所有方法都嵌入程式中
通常將原始檔編譯成動態/靜態庫後,使同一個檔案分別連結動態/靜態庫,連結靜態庫的檔案大小會比連結靜態庫的檔案要大一些(假設庫中包含大量方法,且程式只調用了部分方法);
* 用nm檢視可執行檔案中的函式地址
// TODO
動態庫 / 靜態庫的特點
連結 / 裝載的過程
/*************************************************************************************/
程序 / 執行緒:
/*************************************************************************************/
網路: