几个常用makefile模板(动态库、静态库、可执行程序)

2024-02-22 03:08

本文主要是介绍几个常用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模板(动态库、静态库、可执行程序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/733948

相关文章

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到