APPNAME=link
LIB_SRCS=linker.c
LIB_NAME=linker
LIB_PATH=.libs
CFLAGS+=-I{LIB_PATH}
LDFLAGS+=-L{LIB_PATH} -l{LIB_NAME}
all: clean static_lib shared_lib install
gcc{CFLAGS} main.c -o {APPNAME}_static{LDFLAGS} -static
gcc {CFLAGS} main.c -o{APPNAME}_shared {LDFLAGS} rm -f *.o
static_lib: linker.c
gcc -c{LIB_SRCS}
ar -rcs lib{LIB_NAME}.a *.o
rm -f *.o
shared_lib: gcc -fPIC -shared{LIB_SRCS} -o lib{LIB_NAME}.so
clean:
rm -rf *.o
distclean:
rm -rf .libs
rm -rf{APPNAME}_*
install:
mkdir -p {LIB_PATH}
mv lib{LIB_NAME}.* {LIB_PATH}
cp linker.h{LIB_PATH}
#编译静态库
AR=ar
TARGET=xx.a
obj= a.o b.o ....
all:(obj)(AR) ruc (TARGET)^
%.o:%.c
(CC) -c< @
#调用静态库
TARGET=targetName
CC=gcc
MKLIB=/xx/yy/xx.a
obj= a.o b.o ...
all:(obj) (MKLIB)(CC) ^ -o(TARGET)
%.o:%.c
(CC) -c< @
动态库编译
TARGET=lib_xx.so
CC=gcc
obj= a.o b.o ...
all:(obj)
(CC) -share -fPIC -o(TARGET) ^
%.o:%.c(CC) -fpic -c <@
动态库调用
TARGET=targetName
CC=gcc
MKLIB=-L/xx/yy -l_xx
obj= a.o b.o ...
all:(obj) (CC) (MKLIB)^ -o (TARGET)
%.o:%.c(CC) (MKLIB) -c< @
############################################################# # Makefile for shared library. # 编译动态链接库
############################################################# #set your own environment option CC = g++ CC_FLAG = -D_NOMNG -D_FILELINE
#set your inc and lib INC = LIB = -lpthread -L./ -lsvrtool
#make target lib and relevant obj PRG = libsvrtool.so OBJ = Log.o
#all target all:(PRG)
(PRG):(OBJ)
(CC) -shared -o@ (OBJ)(LIB)
.SUFFIXES: .c .o .cpp
.cpp.o:
(CC)(CC_FLAG) (INC) -c*.cpp -o *.o
.PRONY:clean clean: @echo "Removing linked and compiled files......; rm -f(OBJ) (PRG)
############################################################# # Makefile for static library. # 编译静态链接库
############################################################# #set your own environment option CC = g++ CC_FLAG = -D_NOMNG -D_FILELINE
#static library use 'ar' command AR = ar
#set your inc and lib INC = LIB = -lpthread -L./ -lsvrtool
#make target lib and relevant obj PRG = libsvrtool.a OBJ = Log.o
#all target all:(PRG)
(PRG):(OBJ)
{AR} rv{PRG} ?
.SUFFIXES: .c .o .cpp .cpp.o:(CC) (CC_FLAG)(INC) -c *.cpp -o*.o
.PRONY:clean
clean:
@echo "Removing linked and compiled files......"
rm -f (OBJ)(PRG)
###########################################
#Makefile for simple programs
###########################################
INC=
LIB= -lpthread
CC=CC
CC_FLAG=-Wall
PRG=threadpooltest
OBJ=CThreadManage.o CThreadPool.o CThread.o CWorkerThread.o threadpooltest.o
(PRG):(OBJ)
(CC)(INC) (LIB) -o@ (OBJ)
.SUFFIXES: .c .o .cpp .cpp.o:(CC) (CC_FLAG)(INC) -c *.cpp -o*.o
.PRONY:clean
clean:
@echo "Removing linked and compiled files......"
rm -f (OBJ)(PRG)