linux: 几个常用makefile模板
不才,总结个人常用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
linux: 几个常用makefile模板的更多相关文章
- linux下 几个常用makefile模板,亲测可用
一 生成动态链接库的模板: ####################### # Makefile ####################### # compile and lib parameter ...
- 引用 模块编译Makefile模板
本文转载自geyingzhen<模块编译Makefile模板> 引用 geyingzhen 的 模块编译Makefile模板 ifneq ($(KERNELRELEASE), ) // ...
- 1、编写一个简单Makefile模板
一.Makefile简介 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译, ...
- Linux中Grep常用的15个例子【转】
转自:https://www.aliyun.com/jiaocheng/1390860.html?spm=5176.100033.1.9.6a1e41e8Pdjynm 摘要:Grep命令主要用于从文件 ...
- Linux 使用 github 常用命令
Linux 使用 github 常用命令 今天整理一下常用的 github 命令,自己只是一个编程小白,有些地方可能做的不是很好,仅仅用作自己的学习使用. 创建一个文件夹用于存放github仓库 m ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- linux系统的常用命令
linux系统中常用的命令如下(以后经常补充): cd .. 返回上一级 cd use 进入use目录
- Linux入门学习 常用命令
cd命令 功能是切换到指定的目录:命令格式:cd [目录名]有几个符号作为目录名有特殊的含义:"/"代表根目录.".."代表上一级目录."~" ...
- Linux查看系统配置常用命令
Linux查看系统配置常用命令: 系统 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo ...
随机推荐
- TaintDroid:智能手机监控实时隐私信息流跟踪系统(三)
4.3 原生代码标记传播 Native 代码是不受TaintDroid监控的.理想情况下,我们获得了相同的传播语义当使用相同的解释副本时.因此,为了精确的在Java层进行污点监控,我们定义了两个必 ...
- Linux负载均衡软件LVS之二(安装篇)
一. 安装LVS软件 1.安装前准备工作操作系统:统一采用Centos4.4版本.地址规划,如表1所示:表1 更详细的信息如图2所示: 图2中的VIP指的是虚拟IP地址,还可以叫做LVS集群的服务I ...
- AngularJS 跨站请求- jsonp请求
今天写东西的时候遇到了 一种情况 ,因为用的不是自己公司人员写的接口 ,而我要写的东西是抓别的网页上的接口 所以出现了 一下这种情况 这是我的请求: 我在浏览器模板赋值的时候发现赋值成功了, 在浏览器 ...
- 使用CATransformLayer制作3D图像和动画
之前我们讲过可以用CALayer搭配CATransform3D来实现将View做3D旋转, 今天我们再看一个3D的新东西 CATransformLayer, 看名字就知道这个layer跟旋转有关, 那 ...
- C#通过外部别名,解决DLL冲突问题
今天遇到一个有两个DLL文件,命名空间,部分类名与部分方法名一样,但是方法的功能实现不一样.调用方法时,无法调用指定DLL的指定方法.在网上找了好多,简单总结一下. 1.首先添加引用,不细说. 2.右 ...
- [HMLY]7.iOS MVVM+RAC 从框架到实战
1.MVVM浅析 MVC是构建iOS App的标准模式,是苹果推荐的一个用来组织代码的权威范式,市面上大部分App都是这样构建的,具体组织模式不细说,iOS入门者都比较了解(虽然不一定能完全去遵守), ...
- php中switch语句case后表达式写法记录一
可作等级评价: $var = 95; switch(true){ case $var < 100; $level = 1; break; case $var < 95; $level = ...
- float 属性详解
当前元素分类(float:left) 下一个紧邻元素分类(不含float) 结论 块级元素(a) 块级元素(b) b会填充a遗留下来的空间,a会和b发生重叠,a的图层在上面. 内联元素(b) b会紧跟 ...
- 面试题-Java基础-面向对象
1.面向对象软件开发的优点有哪些? 代码开发模块化,更易维护和修改.代码复用.增强代码的可靠性和灵活性.增加代码的可理解性.面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会 ...
- PyQt5+python3+pycharm开发环境配置
1.下载PyQt https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.6/PyQt5-5.6-gpl-Py3.5-Qt5.6.0-x32- ...