Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25268
  • 博文数量: 7
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-20 20:58
文章分类

全部博文(7)

文章存档

2010年(6)

2009年(1)

我的朋友
最近访客

分类: C/C++

2010-01-20 19:36:12

#=======================================================================================
#   Filename: Makefile
#   Description: 生成动态链接库
#   Usage: make            (默认使用i386下的g++编译                
#       make ARCH=arm (使用arm-uclibc-g++编译
#           make clean      (remove objects, executable, prerequisits
#
#   Version: 1.0
#   Created: 
#   Revision: --- 
#   Author:  xiongwei
#   Company: BLT.Ltd.
# Email: lxwsoft@foxmail.com
#=======================================================================================
#交叉编译器路径
CROSS=
CP=/bin/cp
RM=-/bin/rm -rf
LN=/bin/ln -s 
CFLAGS=-g -O2 -Wall
#链接库名
LIB_NAME=
#链接库版本
LIB_VER=1.0.0
ARCH=

#源文件目录
SrcDir=
#头文件目录
IncDir=

SRCS=$(foreach dir,$(SrcDir),$(wildcard $(dir)/*.cpp))
#INCS=$(foreach dir,$(IncDir),$(wildcard $(dir)/*.h))
INCS=$(foreach dir,$(IncDir),$(addprefix -I,$(dir)))
CFLAGS := $(CFLAGS) $(INCS)

ifeq ($(ARCH),arm)
    CC=$(CROSS)g++
    OBJS = $(SRCS:%.cpp=%.arm)
else
    CC=g++
    ARCH=PC
    OBJS = $(SRCS:%.cpp=%.o)
endif


#gcc 则要加 -lc选项(显示的链接C库)
#Wl 把参数传给链接器
all:$(OBJS)
$(CC) $(CFLAGS) -shared -Wl,-soname,$(LIB_NAME) -o $(LIB_NAME).$(LIB_VER).$(ARCH) $(OBJS) 
@echo -e "[$(ARCH)] OK!\tComplie $@ "
# @$(LN) $(shell pwd)/$(LIB_NAME).$(LIB_VER) /lib/$(LIB_NAME)

#-fPIC 产生于位置无关的代码关能加载到任何地址
%.o:%.cpp
@echo -e "[$(ARCH)] \t\tCompileing $@..."
@$(CC) $(CFLAGS) -fPIC -c $< -o $@
%.arm:%.cpp
@echo -e "[$(ARCH)] \t\tCompileing $@..."
@$(CC) $(CFLAGS) -fPIC -c $< -o $@

.PHONY: clean
clean:
@echo -e "[$(ARCH)] \tCleaning files..."
@$(RM) $(OBJS) $(LIB_NAME) $(LIB_NAME).$(LIB_VER)
文件: Make-lib.tar
大小: 10KB
下载: 下载
阅读(1153) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~