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)
记录技术、生活、经验、思考、学习、管理的博客