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)
以 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
動態庫 / 靜態庫的特點
鏈接 / 裝載的過程
/*************************************************************************************/
進程 / 線程:
/*************************************************************************************/
網絡: