当前位置: 首页 > news >正文

Linux makefile

Linux makefile

  • 用makefile去自动编译和删除静态库和动态库

在实际开发中,项目的源代码文件比较多,按类型、功能、模块分别存放在不同的目录和文件中,哪些文件需要先编译,那些文件后编译,那些文件需要重新编译,还有更多更复杂的操作。

make是一个强大的实用工具,用于管理项目的编译和链接。

make需要一个编译规则文件makefile,可实现自动化编译。

用makefile去自动编译和删除静态库和动态库

Linux 静态库和动态库在这篇博客中介绍了怎么去制作静态库和动态库,在这个基础上我们使用makefile实现自动编译和删除的功能

  • 第一步:去创建makefile文件,因为make命令需要一个编译规则文件makefile
vi makefile

makefile文件内容如下:

# 指定编译的目标文件是libpublic.a和libpublic.so
all:libpublic.a \libpublic.so# 编译libpublic.a需要依赖public.h和public.cpp
# 如果被依赖文件内容发生了变化,将重新编译libpublic.a
libpublic.a:public.h public.cppg++ -c -o libpublic.a public.cpplibpublic.so:public.h public.cppg++ -fPIC -shared -o libpublic.so public.cpp# clean用于清理编译目标文件,仅在make clean才会执行。
clean:rm -f libpublic.a libpublic.so

注意:g++ -c -o libpublic.a public.cpp 和 g++ -fPIC -shared -o libpublic.so public.cpp 以及rm -f libpublic.a libpublic.so 前面一定要用 TAB 键,而不能用八个空格来代替,不然会产生如下提示:
在这里插入图片描述

  • 第二步:此时tools文件中已经存在了 静态库文件(.a) 和 动态库文件(.so),现在我们执行 make clean命令清理编译的目标文件
    在这里插入图片描述
    可以发现被清理掉了

  • 第三步,执行make命令
    在这里插入图片描述
    重新编译生成了动态库和静态库

注意:相关的文件只要被改变,make命令就可以重新执行生成新的文件,并且是改变哪个文件就只重新编译改动文件,而不是全部都重新编译,否则(未进行任何改动)会如下提示:
在这里插入图片描述

相关文章:

Linux makefile

Linux makefile 用makefile去自动编译和删除静态库和动态库 在实际开发中,项目的源代码文件比较多,按类型、功能、模块分别存放在不同的目录和文件中,哪些文件需要先编译,那些文件后编译,那些文件需要重新编译&#xf…...

信息安全基础知识

信息安全基础知识 安全策略表达模型是一种对安全需求与安全策略的抽象概念表达,一般分为自主访问控制模型(HRU)和强制访问控制模型(BLP、Biba)IDS基本原理是通过分析网络行为(访问方式、访问量、与历史访问…...

【数据结构】链式二叉树(超详细)

文章目录 前言二叉树的链式结构二叉树的遍历方式二叉树的深度优先遍历前序遍历(先根遍历)中序遍历(中根遍历)后序遍历(后根遍历) 二叉树的广度优先遍历层序遍历 二叉树链式结构接口实现二叉树结点个数二叉树叶子结点个数二叉树的深度(高度)二叉树第k层结…...

排序题目:最小绝对差

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:最小绝对差 出处:1200. 最小绝对差 难度 2 级 题目描述 要求 给定整数数组 arr \texttt{arr} arr,其中每个元素都不相同&…...

沃飞携AE200真机亮相澳门,全方位赋能城市低空出行

5月22日-25日,第四届BEYOND国际科技创新博览会(BEYOND Expo 2024)在澳门盛大举行。吉利沃飞长空携旗下全自研产品AE200真机亮相,吸引了现场众多领导嘉宾以及媒体、观众的关注。 作为亚洲顶尖的年度科技盛会,本届BEYOND…...

判断当前系统是linux、windows还是MacOS (python)

在很多情况下,需要在python中获取当前系统的类型,用于判断是unix/windows/mac或者java虚拟机等,python中提供了os.name, sys.platform, platform.system等方式 sys sys.platform会返回当前系统平台的标识符&#xff…...

Minikube部署单节点Kubernetes

1.1 Minikube部署单节点K8s Minikube是由Kubernetes社区维护的单机版的Kubernetes集群,支持macOS, Linux, andWindows等多种操作系统平台,使用最新的官方stable版本,并支持Kubernetes的大部分功能,从基础的容器编排管理&#xff0…...

leetcode-顺时针旋转矩阵-111

题目要求 思路 1.假设现在有一个矩阵 123 456 789 2.我们可以根据19这个对角线将数据进行交换&#xff0c;得到矩阵 147 258 369 3.然后将矩阵每一行的数据再翻转&#xff0c;得到矩阵 741 852 963 代码实现 class Solution { public:vector<vector<int> > rot…...

解决GoLand无法Debug

goland 调试的的时候提示如下错误 WARNING: undefined behavior - version of Delve is too old for Go version 1.22.3 (maximum supported v 其实个原因是因为正在使用的Delve调试器版本太旧&#xff0c;无法兼容当前的Go语言版本1.22.3。Delve是Go语言的一个调试工具&#…...

云原生周刊:K8s 上的 gRPC 名称解析和负载平衡

开源项目推荐 Kraken Kraken 是一个基于 P2P 的 Docker 注册表&#xff0c;专注于可扩展性和可用性。它专为混合云环境中的 Docker 镜像管理、复制和分发而设计。借助可插拔的后端支持&#xff0c;Kraken 可以轻松集成到现有的 Docker 注册表设置中作为分发层。 E2E Framewo…...

从0开始回顾ElasticSearch

1 elasticsearch概述 1.1 elasticsearch简介 官网: https://www.elastic.co/ ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的…...

小阿轩yx-Shell编程之条件语句

小阿轩yx-Shell编程之条件语句 条件测试操作 Shell 环境根据命令执行后的返回状态值&#xff08;$?&#xff09;来判断是否执行成功 返回值 为 0 时&#xff1a;表示成功否则&#xff08;非 0 值&#xff09;表示失败或异常 测试工具 test 命令&#xff0c;对特定条件进行…...

MyBatis-Plus 从入门到精通

MyBatis-Plus 从入门到精通 前言快速入门创建一个SpringBoot项目导入依赖配置数据库创建一个实体类创建一个mapper接口在SpringBoot启动类上配置mapper接口的扫描路径在数据库中创建表编写一个SpringBoot测试类 核心功能注解CRUD接口Mapper CRUD接口Service CRUD 接口条件构造器…...

爬虫利器Frida RPC入门——夜神模拟器环境篇

Frida是一款轻量级HOOK框架&#xff0c;可用于多平台上&#xff0c;例如android、windows、ios等。 frida分为两部分&#xff0c;服务端运行在目标机上&#xff0c;通过注入进程的方式来实现劫持应用函数&#xff0c;另一部分运行在系统机器上。frida上层接口支持js、python、…...

猫狗分类识别模型建立①数据标记

一、labelImg库说明 LabelImg是一款非常流行的图像标注工具&#xff0c;广泛用于机器学习和计算机视觉领域。以下是关于LabelImg的详细介绍&#xff1a; 主要功能和特点 1.图像标注 允许用户在图像中标注物体&#xff0c;选择特定区域&#xff0c;并为这些区域添加标签或类…...

FME学习之旅---day28

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 教程&#xff1a;CSV 入门...

vue3项目中字典和全局方法的创建与使用

在src下新建dict.ts/js,写入下面代码 import { App, Plugin } from vue;interface Dict {auditgrouptypeList: { label: string; value: string }[];auditstateList: { label: string; value: string }[];accountchangeList: { label: string; value: number }[]; }const Dict…...

51-54 Sora能制作动作大片还需要一段时间 | DrivingGaussian:周围动态自动驾驶场景的复合高斯飞溅

24年3月&#xff0c;北大、谷歌和加州大学共同发布了DrivingGaussian: Composite Gaussian Splatting for Surrounding Dynamic Autonomous Driving Scenes。视图合成和可控模拟可以生成自动驾驶的极端场景Corner Case&#xff0c;这些安全关键情况有助于以更低成本验证和增强自…...

数据挖掘实战-基于余弦相似度的印度美食推荐系统

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

深入探索DreamFusion:文本到3D生成的革命性技术

深入探索DreamFusion&#xff1a;文本到3D生成的革命性技术 引言&#xff1a; 在人工智能和计算机视觉领域&#xff0c;DreamFusion无疑是一个引人注目的新星。这项技术&#xff0c;基于Google提出的深度学习模型&#xff0c;将自然语言与三维内容生成紧密结合&#xff0c;开…...

新手福音:在快马平台上零配置运行第一个yolov11检测程序

今天想和大家分享一个特别适合深度学习新手的体验——在InsCode(快马)平台上零配置运行第一个yolov11目标检测程序。作为计算机视觉的入门项目&#xff0c;目标检测既能带来直观的视觉反馈&#xff0c;又能快速建立成就感&#xff0c;但传统方式的环境配置往往让初学者望而却步…...

基于ruoyi-flowable-plus与vform的审批流程动态审批人配置实战

1. 动态审批人配置的核心思路 在传统审批流程中&#xff0c;审批人通常是固定配置的&#xff0c;比如直接指定某个角色或具体人员。但在实际业务中&#xff0c;我们经常需要根据流程发起人的组织关系动态确定审批人。比如最常见的场景&#xff1a;需要由发起人的直属上级或部门…...

AI-Youtube-Shorts-Generator完全指南:从安装到批量处理

AI-Youtube-Shorts-Generator完全指南&#xff1a;从安装到批量处理 【免费下载链接】AI-Youtube-Shorts-Generator A python tool that uses GPT-4, FFmpeg, and OpenCV to automatically analyze videos, extract the most interesting sections, and crop them for an impro…...

Cursor Free VIP:三步解锁AI编程助手完整功能的终极指南

Cursor Free VIP&#xff1a;三步解锁AI编程助手完整功能的终极指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your t…...

Qwen3.5-2B算法学习伴侣:动态图解与代码实现一键生成

Qwen3.5-2B算法学习伴侣&#xff1a;动态图解与代码实现一键生成 1. 算法学习的新方式 算法学习一直是开发者成长路上的必经之路&#xff0c;但传统的学习方式往往面临几个痛点&#xff1a;文字解释太抽象、静态图示不够直观、代码实现需要反复调试。Qwen3.5-2B的出现&#x…...

Janus-Pro-7B多模态效果展示:基于Transformer架构的图像描述与问答

Janus-Pro-7B多模态效果展示&#xff1a;基于Transformer架构的图像描述与问答 最近在体验各种多模态大模型&#xff0c;发现了一个挺有意思的选手——Janus-Pro-7B。它主打一个能力&#xff1a;不仅能看懂图片&#xff0c;还能用文字把看到的东西描述出来&#xff0c;甚至能跟…...

DecompilerMC:揭秘Minecraft源码反编译的高效方案

DecompilerMC&#xff1a;揭秘Minecraft源码反编译的高效方案 【免费下载链接】DecompilerMC This repository allows you to decompile any minecraft version that was published after 19w36a without any 3rd party mappings, you just need to execute the script or the …...

解锁TranslucentTB:4种高效实现Windows任务栏透明化的方法

解锁TranslucentTB&#xff1a;4种高效实现Windows任务栏透明化的方法 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 任务栏作为Windows…...

【Linux 物联网网关主控系统-Web部分(四)】

Linux 物联网网关主控系统-Web部分&#xff08;四&#xff09;调用关系总体框架main.htmltop.htmlleft.htmlright.htmlcgi部分调用关系 总体框架 main.html 调用的 HTML&#xff1a; top.html left.html right.html &#xff08;框架集页面&#xff0c;加载顶部、左侧、右侧三…...

QueryExcel:解锁3大核心功能的多Excel文件极速查询指南

QueryExcel&#xff1a;解锁3大核心功能的多Excel文件极速查询指南 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 直击痛点&#xff1a;数据查询的效率困境 场景一&#xff1a;财务报表核对 月底需从…...