make 依據 Makefile 自動化編譯、連結、安裝,是開源專案標準建構工具。本文詳細說明各目標用途、依賴關係與常見變數。
CC、CFLAGS、LDFLAGS、PREFIX 等可覆寫。| 目標 | 作用 | 典型輸出 |
|---|---|---|
make / make all | 預設目標,編譯連結產出執行檔/庫 | bin/、lib/ 下的產物 |
make clean | 刪除編譯產生的中間檔(*.o)、執行檔 | 乾淨原始碼樹 |
make install | 將產物複製至系統目錄($(DESTDIR)$(PREFIX)/bin 等) | /usr/local/bin、/usr/local/lib |
make uninstall | 移除安裝檔案(需 Makefile 支援) | — |
make dist | 打包發布原始碼 tarball(PACKAGE-VERSION.tar.gz) | 釋出用原始碼包 |
make distcheck | 打包→解壓→configure→make→make install 驗證 | 確保發布包可正常建構 |
make distclean | clean + 刪除 configure 產生的檔案(Makefile、config.h 等) | 回到純原始碼狀態 |
# 指定安裝前綴
make PREFIX=/opt/myapp install
# 指定編譯器與優化等級
make CC=clang CFLAGS="-O2 -pipe -march=native"
# 交叉編譯
make CC=aarch64-linux-gnu-gcc CROSS_COMPILE=aarch64-linux-gnu-
make -j$(nproc) # 使用所有 CPU 核心
make -j4 # 指定 4 條執行緒
-devel/-dev 套件。make install 需 root,或配合 DESTDIR 做打包安裝。./configure 或 cmake 產生。