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

1、编译动态库

  1. #############################################################
  2. # Makefile for shared library.
  3. # 编译动态链接库
  4. #############################################################
  5. #set your own environment option
  6. CC = g++
  7. CC_FLAG = -D_NOMNG -D_FILELINE
  8. #set your inc and lib
  9. INC =
  10. LIB = -lpthread -L./ -lsvrtool
  11. #make target lib and relevant obj
  12. PRG = libsvrtool.so
  13. OBJ = Log.o
  14. #all target
  15. all:$(PRG)
  16. $(PRG):$(OBJ)
  17. $(CC) -shared -o $@ $(OBJ) $(LIB)
  18. .SUFFIXES: .c .o .cpp
  19. .cpp.o:
  20. $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
  21. .PRONY:clean
  22. clean:
  23. @echo "Removing linked and compiled files......;
  24. rm -f $(OBJ) $(PRG)

2、编译静态库

  1. #############################################################
  2. # Makefile for static library.
  3. # 编译静态链接库
  4. #############################################################
  5. #set your own environment option
  6. CC = g++
  7. CC_FLAG = -D_NOMNG -D_FILELINE
  8. #static library use 'ar' command
  9. AR = ar
  10. #set your inc and lib
  11. INC =
  12. LIB = -lpthread -L./ -lsvrtool
  13. #make target lib and relevant obj
  14. PRG = libsvrtool.a
  15. OBJ = Log.o
  16. #all target
  17. all:$(PRG)
  18. $(PRG):$(OBJ)
  19. ${AR} rv ${PRG} $?
  20. .SUFFIXES: .c .o .cpp
  21. .cpp.o:
  22. $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
  23. .PRONY:clean
  24. clean:
  25. @echo "Removing linked and compiled files......"
  26. rm -f $(OBJ) $(PRG)

3、可执行程序

  1. ###########################################
  2. #Makefile for simple programs
  3. ###########################################
  4. INC=
  5. LIB= -lpthread
  6. CC=CC
  7. CC_FLAG=-Wall
  8. PRG=threadpooltest
  9. OBJ=CThreadManage.o CThreadPool.o CThread.o CWorkerThread.o threadpooltest.o
  10. $(PRG):$(OBJ)
  11. $(CC) $(INC) $(LIB) -o $@ $(OBJ)
  12. .SUFFIXES: .c .o .cpp
  13. .cpp.o:
  14. $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
  15. .PRONY:clean
  16. clean:
  17. @echo "Removing linked and compiled files......"
  18. rm -f $(OBJ) $(PRG)

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

linux: 几个常用makefile模板的更多相关文章

  1. linux下 几个常用makefile模板,亲测可用

    一 生成动态链接库的模板: ####################### # Makefile ####################### # compile and lib parameter ...

  2. 引用 模块编译Makefile模板

    本文转载自geyingzhen<模块编译Makefile模板>   引用 geyingzhen 的 模块编译Makefile模板 ifneq ($(KERNELRELEASE), ) // ...

  3. 1、编写一个简单Makefile模板

    一.Makefile简介 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译, ...

  4. Linux中Grep常用的15个例子【转】

    转自:https://www.aliyun.com/jiaocheng/1390860.html?spm=5176.100033.1.9.6a1e41e8Pdjynm 摘要:Grep命令主要用于从文件 ...

  5. Linux 使用 github 常用命令

    Linux 使用 github  常用命令 今天整理一下常用的 github 命令,自己只是一个编程小白,有些地方可能做的不是很好,仅仅用作自己的学习使用. 创建一个文件夹用于存放github仓库 m ...

  6. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  7. linux系统的常用命令

    linux系统中常用的命令如下(以后经常补充): cd ..   返回上一级 cd use  进入use目录

  8. Linux入门学习 常用命令

    cd命令 功能是切换到指定的目录:命令格式:cd [目录名]有几个符号作为目录名有特殊的含义:"/"代表根目录.".."代表上一级目录."~" ...

  9. Linux查看系统配置常用命令

    Linux查看系统配置常用命令: 系统 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo ...

随机推荐

  1. springMVC之数据传递

    在前面介绍过从controller中向页面中传数据,可以通过HttpServletRequest进行setAttribute可以将数据放入request中.并且可以在jsp页面使用el表达式获取数据. ...

  2. Embedded Linux Primer----嵌入式Linux基础教程--导论

    第一章 导论 在这一章里(将要学习到) 为什么是Linux 嵌入式Linux现状 开源和GPL(译者:通用公共许可证) 标准和有关团体 本章总结 放弃专有操作系统正在许多传统嵌入式操作系统公司引起一阵 ...

  3. 用Bottle开发web程序(二)

    返回码 在开发web程序时,除了一些服务器错误等,常常需要自定义返回码,以便告诉用户处理请求的结果或者状态.bottle支持自定义的返回码,可以通过以下几种方式进行实现. abort 在bottle中 ...

  4. InvocationHandler中invoke()方法的调用问题

    转InvocationHandler中invoke()方法的调用问题 Java中动态代理的实现,关键就是这两个东西:Proxy.InvocationHandler,下面从InvocationHandl ...

  5. OOAD(面向对象分析和设计)GRASP之创建者模式(Creator)又称生成器模式学习笔记

    说OOAD是一门玄学,一点都不为过.又或许是因为我之前一直没有很好的建立面向对象的思想,更有可能是因为练得不够多...总之,一直没能很好理解,哪怕把一本叫做<UML和模式应用>的书翻来覆去 ...

  6. Thymeleaf 笔记

    th:each=”aname : ${namelist}” th:if=”${name} == ‘SERVICED’” 页面使用Map集合 <div th:each="osl : ${ ...

  7. EF 下的code fist 模式编程

    EF 分两种模式 codefirst(就是不知道数据是啥,也没有数据库)  和 database fist (数据已经设计好了) 首先打开vs  新建一个项目 创建一个控制台程序 然后 新建一个Tea ...

  8. Redmine数据库备份及搬家

    Bitnami Redmine的备份分2种方式: 1.导出数据库 2.整个目录搬家 不管是哪种都想停掉服务,redmine相关的服务有以下5个: redmineApache redmineMySQL ...

  9. D3.js:完整的柱形图

    一个完整的柱形图包含三部分:矩形.文字.坐标轴.本章将对前几章的内容进行综合的运用,制作一个实用的柱形图,内容包括:选择集.数据绑定.比例尺.坐标轴等内容. (1) 添加SVG画布 //画布大小 va ...

  10. IOS GCD使用实例大全

    GCD是大家在IOS开发过程中经常使用的一种多线程管理机制.原理这里就不多说了,大家关心的大部分都是它的使用,下面主要介绍GCD的主要方法及其实例. 1.认识主队列,感受串行队列的运行,运行结果打印的 ...