zoukankan      html  css  js  c++  java
  • 初识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}/shlib
    10 BINDIR=${HOME}/bin
    11 LIBINCL=${HOME}/libincl
    12 INCL=${HOME}/incl
    13 ###########################################################################
    14 INCLUDE=-I${HOME}/app/agent/incl -I${HOME}/app/batch/incl -I${HOME}/app/app/incl
    15 APPEH_INCL=include=${HOME}/app/agent/incl include=${HOME}/app/batch/incl include=${HOME}/app/app/incl
    16 APPLIBDIR=-L${HOME}/app/agent/lib
    17 ###########################################################################
    18 DEBUG=${MOS} -DBUILDDATETIME="$(BUILDDATETIME)"
    19 CC=cc ${OS_CCFLAG}
    20 VPATH=.libs
    21 all : SUPDATE.so
    22 .SUFFIXES:  .c .lo
    23 .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.lo
    26     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 -lc
    27     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

  • 相关阅读:
    windows10家庭版安装docker踩坑解决记录
    sequelize Getters, Setters & Virtuals
    sequelize模型增删改查询(基础)Model Querying
    sequelize数据库模型关联文档详解
    Nginx配置实现下载文件
    Linux常用命令记录
    nodejs后台如何请求第三方接口request-promise简介及其废弃后的替代方案推荐got、axios
    新版本chrome浏览器(80版本以后)带来的跨域请求cookie丢失问题
    谷歌浏览器 Cookie 的 SameSite 属性 (转)
    JavaScript Image对象 整理
  • 原文地址:https://www.cnblogs.com/ITyannic/p/3963066.html
Copyright © 2011-2022 走看看