几个常用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

相关文章

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重