首页 > 代码库 > 初识makefile
初识makefile
1 ########################################################################## 2 include ${HOME}/src/etc/makefile.${GAPSPLATFORM} 3 include ${HOME}/src/etc/${DB}/makefile.${DB} 4 ########################################################################## 5 DATE=`date +"%Y%m%d%H%M"` 6 BUILDDATETIME=$(DATE) 7 RELEASE_VERSION=4.0.0 8 LIBDIR=${HOME}/lib 9 SHLIBDIR=${HOME}/shlib10 BINDIR=${HOME}/bin11 LIBINCL=${HOME}/libincl12 INCL=${HOME}/incl13 ###########################################################################14 INCLUDE=-I${HOME}/app/agent/incl -I${HOME}/app/batch/incl -I${HOME}/app/app/incl15 APPEH_INCL=include=${HOME}/app/agent/incl include=${HOME}/app/batch/incl include=${HOME}/app/app/incl16 APPLIBDIR=-L${HOME}/app/agent/lib17 ###########################################################################18 DEBUG=${MOS} -DBUILDDATETIME=\"$(BUILDDATETIME)\"19 CC=cc ${OS_CCFLAG}20 VPATH=.libs21 all : SUPDATE.so22 .SUFFIXES: .c .lo23 .c.lo:24 libtool --mode=compile --tag=CC ${CC} -g -O ${DEBUG} ${DBS} ${MOS} ${DB_CCFLAGS} ${CCFLAG} -I$(LIBINCL) -I${INCL} -I$(INCLUDE) -c $<25 SUPDATE.so: SUPDATE.lo26 libtool --mode=link --tag=CC ${CC} ${LDFLAG} -g -O -o $(@:.so=.la) $? -rpath ${SHLIBDIR} -release ${RELEASE_VERSION} -export-dynamic -no-undefined -module -L${LIBDIR} ${DB_LIBS} ${APPLIBDIR} -lsha -lsxml -lhsbase -lgapssfs -lgapssql -ldci -lc27 install-shlib.sh SUPDATE.la ${SHLIBDIR} upd
上面是我编写的一个makefile文件,说错了,呵呵,是改写别人的。
说一下我几个注意的点:
1.makefile是什么?就是指定一个工程里文件的编译规则包括编译顺序和如何编译。
2.第14行有个“-I”或“--include-dir”参数,make就会在这个参数所指定的目录下去寻找。
3.第20行 VPATH=.libs 这样make就会在当前目录找不到的情况下,到所指定的目录.libs中去找寻文件了。
4.第24行 libtool --mode=compile --tag=CC ${CC} -g -O ${DEBUG}
这是利用libtool进行编译,生成*.o这样的输出文件。
5.第26行 libtool --mode=link --tag -rpath ${SHLIBDIR}
创建动态库。-rpath 生成动态库,-dynamic 生成静态库。
6.第27行 install-shlib.sh SUPDATE.la ${SHLIBDIR} upd
安装动态库。后面直接make就可以直接编译执行啦~
呀呀呀,到最后得加上参考文档~~ http://www.baike.com/wiki/libtool
初识makefile
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。