檔案清單:
代碼檔案
/* 下列代碼儲存到 plus.cpp */int my_plus(int x,int y) { return x + y; }
/* 下列代碼儲存到 minus.cpp */int my_minus(int x,int y) { return x - y; }
/* 下列代碼儲存到 my_math.h */int my_plus(int x,int y); int my_minus(int x,int y);
/* 下列代碼儲存到 lib_test.cpp */#include"my_math.h" #include<stdio.h> int main() { printf("[my_plus ] = %d\n",my_plus(3,5)); printf("[my_minus] = %d\n",my_minus(3,5)); return 0;}
makefile檔案
/* 下面內容儲存到 lib.mak */SHELL = /bin/sh CC = g++AR = ar CFLAG = -O2 -W -Wall INCLUDE_PATH = -I. LIB_TARGET = ./libmath.a PLUS_OBJ = plus.o PLUS_SRC = ./plus.cpp MIN_OBJ = minus.o MIN_SRC = ./minus.cppall : $(LIB_TARGET) $(PLUS_OBJ): $(PLUS_SRC) $(CC) $(CFLAG) $(INCLUDE_PATH) -c $(PLUS_SRC) $(MIN_OBJ): $(MIN_SRC) $(CC) $(CFLAG) $(INCLUDE_PATH) -c $(MIN_SRC) $(LIB_TARGET) : $(PLUS_OBJ) $(MIN_OBJ) $(AR) cq $@ $^ rm -f $(PLUS_OBJ) rm -f $(MIN_OBJ)clean: rm -f $(PLUS_OBJ) rm -f $(LIB_TARGET)
/* 下面內容儲存到 app.mak */SHELL = /bin/sh CC = g++ INCLUDE_PATH = -I. TEST_TARGET = ./test TEST_SRC = ./lib_test.cpp LDFLAGS := ./libmath.a all : $(CC) -g $(TEST_SRC) $(LDFLAGS) -o $(TEST_TARGET) $(INCLUDE_PATH) clean: rm -f $(TEST_TARGET)
編譯串連
編譯產生靜態庫:
在linux終端使用命令:
make -flib.mak
效果如下圖
編譯產生可執行檔
使用命令:
make -fapp.mak
效果如下圖
運行: