红联Linux门户
Linux帮助

linux:几个常用makefile模板

发布时间:2015-12-23 11:13:50来源:linux网站作者:whitepop

不才,总结个人常用makefile模板,以备后用。


1、编译动态库
#############################################################  
# 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) 


2、编译静态库

############################################################# 
# 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) 


3、可执行程序

########################################### 
#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) 


随机组合、举一反三会写出适合项目的makefile。


我的第一个内核模块和makefile文件编写:http://www.linuxdiyf.com/linux/14210.html

Linux的通用makefile模板:http://www.linuxdiyf.com/linux/7985.html

Linux下面系统开发Makefile须知:http://www.linuxdiyf.com/linux/1237.html