iT邦幫忙

DAY 5
1

21世紀C語言實作及感想系列 第 5

21世紀C語言之5 :makefile

最簡單的makefile, 沒有用到預設的函式庫。

CFLAGS = -g -Wall -std=gnu99 -O3
LDLIBS=
OBJECTS=
CC=gcc

$(P): $(OBJECTS)

使用時,看你的源碼(.c)是什麼檔,

例如hell.c

那就 export P=hell (不用寫.c)

就可以編譯了。這有個好處,就是當有很多小小的測試語句文法的源碼(.c)檔,只要改一下export P=想要測試的源碼,即可編譯,覺得實在很方便。

如果用到非標準庫呢? 如GSL,GNU 的科學計算庫,你可以用套件管理員安裝,

測試例子為gsl_erf.c,

/* Compile with:
export LDLIBS="`pkg-config --libs gsl`"
export CFLAGS="`pkg-config --cflags gsl` -g -Wall -std=gnu11 -O3"
make gsl_erf
*/
#include <gsl/gsl_cdf.h>
#include <stdio.h>

int main(){
    double bottom_tail = gsl_cdf_gaussian_P(-1.96, 1);
    printf("Area between [-1.96, 1.96]: %g\n", 1-2*bottom_tail);
}

這時候 makefile可以這樣寫,

CFLAGS = -g -Wall -std=gnu99 -O3
LDLIBS= pkg-config --libs gsl
OBJECTS=
CC=gcc

$(P): $(OBJECTS)

編譯成功,或是

CFLAGS = -g -Wall -std=gnu99 -O3
LDLIBS= -lgsl -lgslcblas -lm
OBJECTS=
CC=gcc

$(P): $(OBJECTS)


不用IDE,就必須要多了解一些東西,

make 是編譯C源碼的利器。本次內容所提到的makefile的寫法,對於多個含有main的小檔共用一個makefile, 只要export 要編譯的程式名稱即可。未來大量測試函數庫,文法時挺好用。

網路上google 到的一些makefile 的編寫入門,可以發現這個算是最簡單的。簡單到有點不可思議,才知道make指令,

是有點人工智慧,會多做一些額外的工作,讓我們少做一點事。


上一篇
21世紀C語言之4 :第二個範例
下一篇
21世紀C語言之6 :Here Document
系列文
21世紀C語言實作及感想30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言