Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)

  • 1、生成可执行文件的makefile
  • 2、生成静态链接库的makefile
  • 3、生成动态链接库的makefile

本文把makefile 分成了三份:生成可执行文件的makefile,生成静态链接库的makefile,生成动态链接库的makefile。

  这些makefile都很简单,一般都是一看就会用,用法也很容易,只需要把它们拷贝到你的代码的同一目录下,然后就可以用 make 来生成目标文件了。

  下面是三个makefile的源代码:

回到顶部

1、生成可执行文件的makefile

复制代码

######################################
#
######################################
#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE  := $(wildcard *.c) $(wildcard *.cpp)
OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))#target you can change test to what you want
#目标文件名,输入任意你想要的执行文件名
TARGET  := test#compile and lib parameter
#编译参数
CC      := gcc
LIBS    :=
LDFLAGS :=
DEFINES :=
INCLUDE := -I.
CFLAGS  := -g -Wall -O3 $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H#i think you should do anything here
#下面的基本上不需要做任何改动了
.PHONY : everything objs clean veryclean rebuildeverything : $(TARGET)all : $(TARGET)objs : $(OBJS)rebuild: veryclean everythingclean :rm -fr *.sorm -fr *.overyclean : cleanrm -fr $(TARGET)$(TARGET) : $(OBJS)$(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)

复制代码

 

回到顶部

2、生成静态链接库的makefile

复制代码

######################################
#
#
#######################################target you can change test to what you want
#共享库文件名,lib*.a
TARGET  := libtest.a#compile and lib parameter
#编译参数
CC      := gcc
AR      = ar
RANLIB  = ranlib
LIBS    :=
LDFLAGS :=
DEFINES :=
INCLUDE := -I.
CFLAGS  := -g -Wall -O3 $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H#i think you should do anything here
#下面的基本上不需要做任何改动了#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE  := $(wildcard *.c) $(wildcard *.cpp)
OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE))).PHONY : everything objs clean veryclean rebuildeverything : $(TARGET)all : $(TARGET)objs : $(OBJS)rebuild: veryclean everythingclean :rm -fr *.overyclean : cleanrm -fr $(TARGET)$(TARGET) : $(OBJS)$(AR) cru $(TARGET) $(OBJS)$(RANLIB) $(TARGET)

复制代码

 

回到顶部

3、生成动态链接库的makefile

复制代码

######################################
#
#
#######################################target you can change test to what you want
#共享库文件名,lib*.so
TARGET  := libtest.so#compile and lib parameter
#编译参数
CC      := gcc
LIBS    :=
LDFLAGS :=
DEFINES :=
INCLUDE := -I.
CFLAGS  := -g -Wall -O3 $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H
SHARE   := -fPIC -shared -o#i think you should do anything here
#下面的基本上不需要做任何改动了#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE  := $(wildcard *.c) $(wildcard *.cpp)
OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE))).PHONY : everything objs clean veryclean rebuildeverything : $(TARGET)all : $(TARGET)objs : $(OBJS)rebuild: veryclean everythingclean :rm -fr *.overyclean : cleanrm -fr $(TARGET)$(TARGET) : $(OBJS)$(CC) $(CXXFLAGS) $(SHARE) $@ $(OBJS) $(LDFLAGS) $(LIBS)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python数据分析之pandas入门

一、pandas库简介 pandas是一个专门用于数据分析的开源Python库,目前很多使用Python分析数据的专业人员都将pandas作为基础工具来使用。pandas是以Numpy作为基础来设计开发的,Numpy是大量Python数据科学计算库的基础,pandas以此为基础&#x…

激光雷达和毫米波雷达的区别

什么是激光雷达 激光雷达,是以发射激光束探测目标的位置、速度等特征量的雷达系统。其工作原理是向目标发射探测信号(激光束),然后将接收到的从目标反射回来的信号(目标回波)与发射信号进行比较&#xff0c…

Git—使用方法

1、:插件的安装(eclipse LUNA版本之后已经自动集成,不需要安装插件)、 * 先打开该网页提供了对应版本的EGit,自己选择相应的版本。(http://wiki.eclipse.org/EGit/FAQ#Where_can_I_find_older_releases_of_EGit.3F&…

激光雷达与毫米波雷达对比

激光雷达是一种采用非接触激光测距技术的扫描式传感器,其工作原理与一般的雷达系统类似,通过发射激光光束来探测目标,并通过搜集反射回来的光束来形成点云和获取数据,这些数据经光电处理后可生成为精确的三维立体图像。采用这项技…

安全可靠国产系统下的应用怎么搭建?

据国家信息安全漏洞共享平台(CNVD)统计数据,2016年我国共收录通用软硬件漏洞 10822个,漏洞来源涵盖了众多知名的国外厂商。应用软件的不安全性对我国信息技术发展产生了重大威胁,近年来我国频繁发布信息安全相关政策&a…

Win10 + Python + MXNet + VS2015配置

项目需要使用MTCNN来检测、对齐、剪切出人脸,它是使用MXNet作为框架的,但是我自己的Ubuntu里各种框架乱成一团,不想再添乱就铁了心要在windows里配一个。无奈网上的资料不多,挣扎了几天之后决定留下这么一份文档。 首先我们使用的…

bzoj 3224 Tyvj 1728 普通平衡树

题目大意: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数&#xff0c…

不懂毫米波雷达?5分钟读懂毫米波雷达的那些事儿

2019年是毫米波风生水起的一年,也是毫米波名声大噪的一年。毫米波应用范围广泛,如毫米波雷达、毫米波天线等。而本文,将向大家介绍毫米波雷达,主要内容包括:毫米波雷达原理、毫米波雷达主要特点、毫米波雷达优势以及毫…

redis集群的搭建

########环境######### centos 7.2 , gcch 环境ruby 2.0.0 redis 3.2.8 redis-3.3.3gem 公司要求搭建redis集群, 本来觉得挺好搞的,没想到弄到现在.... 1, 环境准备 gcc , ruby 等环境准备 yum -y install gcc ruby ruby-devel rubygems rpm-build zlib redis-ruby接口安装, 我…

2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结

2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结 找出全书你认为最重要的一章,深入重新学习一下,要求(期末占10分): 完成这一章所有习题详细总结本章要点给你的结对学习搭档讲解你的总结并获取反馈我选…

进程间五种通信方式

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机…

电子书下载:Silverlight 5 in Action

下载:http://www.ctdisk.com/file/8447319

Virtualbox桥接网卡设置

正常情况下,像设置virtualbox虚拟机的桥接网卡非常简单,只需要点配置,然后在配置界面点击网络,然后在右边的网络里选择桥接网络即可。但是如果这么简单就好了,今天要说的就是在不正常的情况下是怎么设置的。 工具/原料…

SQL疑难杂症【4 】大量数据查询的时候避免子查询

前几天发现系统变得很慢,在Profiler里面发现有的SQL执行了几十秒才返回结果,当时的SQL如下: 可以看得出来,在652行用了子查询,恰巧目标表(QS_WIP)中的记录数为100000000,通过如下SQL可以得到: S…

『原创』一个基于Win CE 5.0的Txt文件阅读器

最近,拿到一台亲戚送的GPS导航仪,其系统是基于WinCE5.0的,所以我觉得可以写点小程序上去,上网一搜,还附带破解方法,把GPS破解后就变成一台屏幕超大的PDA了,于是我想用它看电子书,无奈…

ARM Cortex-A系列(A53、A57、A73等)处理器性能分类与对比

在如今这个电子产品泛滥的年代,仅仅靠品牌或是外观已经不足以辨别产品的优劣,其内置的处理器自然也就成为了分辨产品是否高端的标准之一。那么我们今天就不妨好好了解一下近几年来电子产品中较为主流的RAM处理器。 在这之前让我们先简单认识一下处理器的…

.NET 3.5 - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除

步步为营VS 2008 .NET 3.5(8) - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除作者&#xff1a;webabcd介绍以Northwind为示例数据库&#xff0c;DLINQ(LINQ to SQL)之完全面向对象的添加操作、查询操作、更新操作和删除操作示例Sample.aspx <% Page Language&quo…

ARM版本系列及家族成员梳理

ARM公司简介 ARM是Advanced RISC Machines的缩写&#xff0c;它是一家微处理器行业的知名企业&#xff0c;该企业设计了大量高性能、廉价、耗能低的RISC &#xff08;精简指令集&#xff09;处理器。 1985年第一个ARM原型在英国剑桥诞生。 公司的特点是只设计芯片&#xff0c…

tomcat源码阅读之StandardHost和StandardEngine

StandardHost及UML类图&#xff1a; 1、StandardHost类是Host接口的默认实现&#xff1b;其继承自ContainerBase类&#xff0c;说明他也是一个容器类&#xff0c;既然是容器类&#xff0c;那肯定也有管道对象PipeLine和阀门&#xff0c;其基础阀门&#xff08;Basic Valve&…

安防监控产业链全景梳理

安防行业是随着现代社会安全需求应运而生的产业&#xff0c;围绕着视频监控技术的改革创新&#xff0c;行业从“看得见、看得远、看得清到看得懂”&#xff0c;一共经历模拟监控、数字监控、网络高清监控和智能监控4个阶段&#xff0c;每一阶段的突破&#xff0c;都由上游技术的…