FreeBSD Makefile 介紹

--

常見的 Make 種類包括

  • GNU Make (GMake), Linux 使用
  • Nmake: Windows 使用
  • CMake, 一個開源的跨平台自動化建構系統,因為跨平台,常常用在 C/C++ 專案上
  • BSD Make, FreeBSD 使用,實際上是從 NetBSD 那邊移植過來的,請參考論壇討論bmake 介紹

编译工具make、gmake、cmake、nmake和Dmake的区别

Makefile

FreeBSD 的 Makefile 會常常 include 一些東西,以 rwhod(8) command 的 Makeile 為例 (freebsd-src/usr.sbin/rwhod/Makefile)

PROG=	rwhod
MAN= rwhod.8

PACKAGE=rcmds
WARNS?= 3
.include <bsd.prog.mk>

可以看到最下面會有 include bsd.prog.mk 這些東西其實也是一個 makefile,會放在 freebsd-src/share/mk/ 底下,而我們可以看同樣目錄下的 bsd.README 來了解這些 include 的 mk 檔案試做什麼的。

可以看到 bsd.prog.mk 是用來 build program,同樣也有提到 PROG 指定要產生的 program and MAN 指定 man page。

PACKAGE 可能表示相依的套件,這個我到是沒看到有詳細的講解

WARNS 表示編譯器警告等級,這個我也是沒看到有詳細的講解,只是說可以設定這個變數。

而同樣在 bsd.README 也有講到我們能執行的 target

其中 depend 會產生 Makefile.depend file,表示相依性的 file。

而在寫 Makefile 會有相對的 styel 教遵守,這時候可以看 STYLE.MAKEFILE(5)

MAKE.CONF(5) 也會介紹一些常見的 FLAG。

遇過的 flag

CFLAGS: C compile 時要加入的 flag,要 .include <src.opt.mk>。舉例用法 CFLAGS+= -DINET,假如機器編譯時支援 INET,可以用 CFLAGS define INET,在 C program 在加 #ifdef INET …… #endif

--

--

Kola (Yan-Hao Wang)
Kola (Yan-Hao Wang)

Written by Kola (Yan-Hao Wang)

在系統軟體跟資安領域學習的學生

No responses yet