Ubuntu 軟件倉庫雖豐富,但最新版本、特定編譯選項或未收錄軟件仍需從源碼安裝。本文系統講解 標準三步走 (configure → make → make install) 流程、依賴處理、安裝路徑控制與卸載管理,助你掌握通用 Linux 源碼部署技能。
sudo apt-get update
sudo apt-get install build-essential
build-essential 包含:gcc, g++, make, dpkg-dev, libc6-dev 等核心工具。
# 下載 (以 wget 為例)
wget https://example.com/software-1.2.3.tar.gz
# 解壓
tar xvzf software-1.2.3.tar.gz
cd software-1.2.3/
必讀檔案:README、INSTALL、CHANGELOG — 開發者權威安裝指引。
./configure --help # 查看所有可選參數
./configure --prefix=/opt/software-1.2.3 # 指定安裝路徑 (推薦隔離管理)
# 或保留預設 /usr/local
./configure
核心作用:
✅ 檢測依賴庫 (頭文件 + 庫文件)
✅ 生成 Makefile 與 config.h
✅ 設定安裝路徑 (--prefix)、啟用/禁用功能模組
依賴缺失處理:
報錯 checking for xxx... no → 安裝對應 開發包 (-dev):
apt-cache search xxx | grep dev
sudo apt-get install libxxx-dev
重複執行 ./configure 直至無錯誤。
make -j$(nproc) # 並行編譯,加速多核 CPU
常見錯誤:
❌ 語法錯誤/API 變更 → 檢查 GCC 版本相容性、套用補丁
❌ 缺少符號 → 依賴庫版本不匹配,檢查 config.log
💡 求助專案 Mailing List / GitHub Issues,提交詳細編譯日誌。
sudo make install
預設寫入 /usr/local/{bin,lib,include,share},需 root 權限。
若使用 --prefix=/opt/xxx,則寫入該目錄,無需 sudo (目錄擁有者為當前用戶)。
cd /path/to/source
sudo make uninstall # 需源碼目錄保留且 Makefile 支持
局限:部分專案無 uninstall 目標。建議:
checkinstall 生成 .deb 包管理:sudo checkinstallstow/xstow 符號鏈接管理多版本共存。./configure LDFLAGS="-static" CFLAGS="-static" --prefix=/opt/static-build
注意:glibc 不建議完全靜態鏈接 (NSS、DNS 解析需動態庫)。
./configure --host=arm-linux-gnueabihf --prefix=/opt/arm-build
# 需對應交叉工具鏈與 sysroot
./configure --prefix=/usr/local/stow/software-1.2.3
sudo make install
cd /usr/local/stow
sudo stow software-1.2.3 # 在 /usr/local/bin 建立符號鏈接
# 切換版本:stow -D software-1.2.3 && stow software-1.2.4
apt-cache policy / PPA / Snap / Flatpak 是否有合適版本。build-essential 及 checkinstall。README/INSTALL,確認依賴與授權條款。--prefix 隔離安裝,避免污染系統目錄。make clean 或 make distclean 確保乾淨狀態。源碼編譯安裝是 Linux 使用者進階必備技能。掌握 configure/make/install 標準流程、依賴包 (-dev) 解決套路、--prefix 隔離策略與 checkinstall/stow 管理工具,即可輕鬆駕馭任何開源專案的部署與維護。