gcc -c main.c -o main.o # 編譯為目標文件gcc -c haha.c -o haha.ogcc -c sin_value.c -o sin_value.o# 鏈接生成可執行文件,鏈接數學庫gcc -o main main.o haha.o sin_value.o -lm -L/usr/lib -L/lib 適用於極簡項目;大型項目需構建系統管理依賴與增量編譯。
./configure # 檢測環境:編譯器、庫、頭文件、OS 特性 → 生成 Makefilemake # 按 Makefile 編譯、鏈接make clean # 清理舊產物 (可選,保證乾淨)make install # 安裝到默認前綴 (/usr/local) configure 核心檢測項:
libxml2、openssl)。--prefix) 等用戶選項。原理:同源碼在不同平台 (CentOS/SUSE/Debian) 因庫路徑、內核版本、編譯器版本差異,**二進制不可直接移植**,必須在目標機重新編譯。
廠商針對特定 OS/架構預編譯,用戶解壓即用 (如 Go、Node.js、JDK 官方 tarball)。缺點:無依賴管理、無統一卸載、難以統一升級。
rpm -ivh package.rpm # 安裝 (檢查依賴、寫入本地 RPM DB)rpm -e package # 卸載rpm -q package # 查詢rpm -V package # 驗證文件完整性rpm2cpio package.rpm | cpio -idmv # 解包不安裝 /var/lib/rpm,支持查詢/驗證/回滾。package.src.rpm 含源碼 + .spec 構建腳本。用戶可 rpmbuild --rebuild package.src.rpm 在本機重新編譯生成適配當前環境的二進制 RPM,解決跨版本兼容問題。
| 發行版系列 | 前端工具 | 後端 | 特點 |
|---|---|---|---|
| Debian/Ubuntu | apt / apt-get / aptitude | dpkg (.deb) | 依賴解決強、源豐富、PPA 支持 |
| RHEL/CentOS/Fedora | dnf / yum | rpm (.rpm) | 企業級穩定、模塊化倉庫、模組流 |
| Arch/Manjaro | pacman | .pkg.tar.zst | 滾動更新、AUR 用戶倉庫極豐富 |
| openSUSE | zypper | rpm | SAT 解依賴、Btrfs 快照回滾 |
最佳實踐:優先使用發行版官方倉庫,缺失版本或定制需求時再考慮源碼編譯或第三方倉庫 (PPA/Copr/AUR)。