Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 原始碼安裝完全指南:Tarball 解包、Configure、Make、Make Install 標準流程

編輯:Linux 系統常見問題解答

什麼是 Tarball

Tarball 指原始碼經 tar 打包並壓縮 (.tar.gz, .tar.bz2, .tar.xz) 的發佈格式,通常包含:

  • 原始碼檔案 (.c, .cpp, .h...)
  • 建構腳本 (configure, CMakeLists.txt, meson.build)
  • 說明文件 (README, INSTALL, CHANGELOG, COPYING)

標準四步驟流程

1. 解包

# .tar.gz (gzip)
tar -xzf package.tar.gz

# .tar.bz2 (bzip2)
tar -xjf package.tar.bz2

# .tar.xz (xz, 壓縮率最高)
tar -xJf package.tar.xz

# 通用 (自動偵測壓縮格式,tar 1.15+)
tar -xf package.tar.*

2. 配置 (./configure)

cd package-version

# 查看可用選項
./configure --help

# 常用選項
./configure --prefix=/usr/local/package-name   # 安裝路徑 (預設 /usr/local)
./configure --enable-shared --disable-static   # 動態庫/靜態庫
./configure --with-ssl=/usr/local/openssl      # 指定依賴路徑
./configure CC=gcc CFLAGS="-O2 -pipe"          # 指定編譯器/優化參數

# 執行配置 (生成 Makefile)
./configure --prefix=/usr/local/myapp

關鍵產出:Makefile (編譯規則)、config.h (編譯時宏定義)、config.status (重新配置腳本)。

3. 編譯 (make)

# 預設讀取當前目錄 Makefile
make

# 多核心並行編譯 (N = CPU 核心數 + 1)
make -j$(nproc)

# 僅編譯特定目標
make all
make lib
make bin/myapp

4. 安裝 (make install)

# 預設需 root 權限寫入 /usr/local
sudo make install

# 或指定 DESTDIR 打包/測試 (不污染系統)
make install DESTDIR=/tmp/staging

# 卸裝 (需原始碼目錄保留)
sudo make uninstall
# 若無 uninstall 目標,手動刪除或用 checkinstall 建立套件

進階技巧

乾淨重建

make clean        # 刪除 .o 檔、執行檔
make distclean    # 連同 Makefile、config.h 刪除 (回到解包初始狀態)

交叉編譯 (嵌入式)

./configure --host=arm-linux-gnueabihf \
            --prefix=/opt/arm/myapp \
            CC=arm-linux-gnueabihf-gcc \
            CFLAGS="-O2 -march=armv7-a"

使用 checkinstall 建立系統套件 (便於管理)

sudo apt install checkinstall  # Debian/Ubuntu
sudo make install
# 替換為
sudo checkinstall -D --install=yes --fstrans=yes --pkgname=myapp --pkgversion=1.0
# 產生 .deb/.rpm 可用 dpkg/rpm 管理

Out-of-tree 建構 (推薦,保持原始碼乾淨)

mkdir build && cd build
../configure --prefix=/usr/local/myapp
make -j$(nproc)
sudo make install

常見問題排查

錯誤原因解決
configure: error: C compiler cannot create executables缺編譯器/庫apt install build-essential / yum groupinstall "Development Tools"
checking for libxxx... not found缺開發套件apt install libxxx-dev (開發頭檔/靜態庫)
Makefile:xxx: recipe for target 'xxx' failed原始碼錯誤/相容性查看完整錯誤、檢查 GCC 版本、嘗試 CFLAGS="-U_FORTIFY_SOURCE"
/usr/bin/ld: cannot find -lxxx連結器找不到庫ldconfig、檢查 LD_LIBRARY_PATH、安裝對應 -dev 包
權限被拒絕安裝目錄需 rootsudo make install 或 --prefix=$HOME/.local

現代建構系統對比

系統配置檔特點常見專案
Autotoolsconfigure.ac / Makefile.am成熟、跨平台、標準GCC, Coreutils, GLib, 多數 GNU 專案
CMakeCMakeLists.txtIDE 整合好、Windows 支援佳LLVM, Qt, KDE, OpenCV, ROS
Mesonmeson.build速度快、語法簡潔、預設安全GNOME, systemd, Wayland, 新專案趨勢
BazelBUILD.bazel巨型倉庫、遠端快取、強一致性Google 內部、TensorFlow, Abseil

遇到 CMakeLists.txt → cmake -B build -DCMAKE_INSTALL_PREFIX=... → cmake --build build --target install

Copyright © Windows教程網 All Rights Reserved