GCC := gcc
LIB_NAME := test
ifeq ($(OS),Windows_NT)
uname_S := Windows
else
uname_S := $(shell uname -s)
endif
ifeq ($(uname_S), Windows)
SHARE_LIB := $(LIB_NAME).dll
CFLAGS := -I${JAVA_HOME}/include -I${JAVA_HOME}/include/win32 -Wl,--add-stdcall-alias -shared
endif
ifeq ($(uname_S), Linux)
SHARE_LIB := $(LIB_NAME).so
CFLAGS := -fPIC -shared -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
endif
ifeq ($(uname_S), Darwin)
SHARE_LIB := $(LIB_NAME).jnilib
CFLAGS := -Os -dynamiclib -I${JAVA_HOME}/include -I${JAVA_HOME}/include/darwin
endif
DIR_SRC := .
DIR_OBJ := .
DIR_LIB := lib
SRC := $(wildcard ${DIR_SRC}/*.c)
OBJ := $(patsubst %.c, ${DIR_OBJ}/%.o, $(notdir ${SRC}))
all:$(OBJ)
$(GCC) -o $(DIR_LIB)/$(SHARE_LIB) $(SRC) $(CFLAGS)
clean:
rm -rf $(DIR_OBJ)/*.o $(DIR_LIB)/*
Makefile生成動態(tài)庫通用模板
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- 最近在寫makefile記錄一下,一個簡單通用的makefile直接放到.c和.h下 輸入make即可。幫助初學者...
- 一、靜態(tài)庫和動態(tài)庫 定義 根據(jù)鏈接時期的不同,庫有靜態(tài)庫和動態(tài)庫之分。 靜態(tài)庫是在鏈接階段被鏈接的,所以生成的可執(zhí)...
- 函數(shù)庫:本質:一組函數(shù)。具有相近的功能或操作同一數(shù)據(jù)結構。strcpy/strcmp/strcat/strlen/...
- 目錄文件 hello.c hello.h 生成動態(tài)鏈接庫libhello.so main.c 內容 使用動態(tài)鏈接庫...
- Makefile 中編譯選項的位置可以隨意變化,但是動態(tài)鏈接庫之間的相對位置有講究。 比如在編譯一個項目時遇到錯誤...