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去自动编译和删除静态库和动态库 在实际开发中,项目的源代码文件比较多,按类型、功能、模块分别存放在不同的目录和文件中,哪些文件需要先编译,那些文件后编译,那些文件需要重新编译…...
信息安全基础知识
信息安全基础知识 安全策略表达模型是一种对安全需求与安全策略的抽象概念表达,一般分为自主访问控制模型(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会返回当前系统平台的标识符ÿ…...
Minikube部署单节点Kubernetes
1.1 Minikube部署单节点K8s Minikube是由Kubernetes社区维护的单机版的Kubernetes集群,支持macOS, Linux, andWindows等多种操作系统平台,使用最新的官方stable版本,并支持Kubernetes的大部分功能,从基础的容器编排管理࿰…...
leetcode-顺时针旋转矩阵-111
题目要求 思路 1.假设现在有一个矩阵 123 456 789 2.我们可以根据19这个对角线将数据进行交换,得到矩阵 147 258 369 3.然后将矩阵每一行的数据再翻转,得到矩阵 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调试器版本太旧,无法兼容当前的Go语言版本1.22.3。Delve是Go语言的一个调试工具&#…...
云原生周刊:K8s 上的 gRPC 名称解析和负载平衡
开源项目推荐 Kraken Kraken 是一个基于 P2P 的 Docker 注册表,专注于可扩展性和可用性。它专为混合云环境中的 Docker 镜像管理、复制和分发而设计。借助可插拔的后端支持,Kraken 可以轻松集成到现有的 Docker 注册表设置中作为分发层。 E2E Framewo…...
从0开始回顾ElasticSearch
1 elasticsearch概述 1.1 elasticsearch简介 官网: https://www.elastic.co/ ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的…...
小阿轩yx-Shell编程之条件语句
小阿轩yx-Shell编程之条件语句 条件测试操作 Shell 环境根据命令执行后的返回状态值($?)来判断是否执行成功 返回值 为 0 时:表示成功否则(非 0 值)表示失败或异常 测试工具 test 命令,对特定条件进行…...
MyBatis-Plus 从入门到精通
MyBatis-Plus 从入门到精通 前言快速入门创建一个SpringBoot项目导入依赖配置数据库创建一个实体类创建一个mapper接口在SpringBoot启动类上配置mapper接口的扫描路径在数据库中创建表编写一个SpringBoot测试类 核心功能注解CRUD接口Mapper CRUD接口Service CRUD 接口条件构造器…...
爬虫利器Frida RPC入门——夜神模拟器环境篇
Frida是一款轻量级HOOK框架,可用于多平台上,例如android、windows、ios等。 frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在系统机器上。frida上层接口支持js、python、…...
猫狗分类识别模型建立①数据标记
一、labelImg库说明 LabelImg是一款非常流行的图像标注工具,广泛用于机器学习和计算机视觉领域。以下是关于LabelImg的详细介绍: 主要功能和特点 1.图像标注 允许用户在图像中标注物体,选择特定区域,并为这些区域添加标签或类…...
FME学习之旅---day28
我们付出一些成本,时间的或者其他,最终总能收获一些什么。 教程: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月,北大、谷歌和加州大学共同发布了DrivingGaussian: Composite Gaussian Splatting for Surrounding Dynamic Autonomous Driving Scenes。视图合成和可控模拟可以生成自动驾驶的极端场景Corner Case,这些安全关键情况有助于以更低成本验证和增强自…...
数据挖掘实战-基于余弦相似度的印度美食推荐系统
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
深入探索DreamFusion:文本到3D生成的革命性技术
深入探索DreamFusion:文本到3D生成的革命性技术 引言: 在人工智能和计算机视觉领域,DreamFusion无疑是一个引人注目的新星。这项技术,基于Google提出的深度学习模型,将自然语言与三维内容生成紧密结合,开…...
Lindy自动化不是IT部门的事!CIO亲述:如何用“业务-技术-合规”三权制衡模型锁定首期300万降本收益
更多请点击: https://intelliparadigm.com 第一章:Lindy自动化不是IT部门的事!CIO亲述:如何用“业务-技术-合规”三权制衡模型锁定首期300万降本收益 Lindy自动化(Lindy Effect-driven Automation)的本质&…...
【收藏必备】2026 版大语言模型入门详解:小白 程序员快速上手 LLM 核心原理
大语言模型(LLM)是 2026 年生成式 AI 与智能体(Agent)时代的核心基石,本文系统拆解其发展脉络、应用全流程与完整构建逻辑。从自监督预训练、指令微调至人类反馈强化学习(RLHF),逐层…...
告别黑屏!手把手教你用QNX Screen API在8295座舱屏上显示第一个窗口
从零到一:QNX Screen图形开发实战指南 1. 初识QNX Screen图形系统 在车载信息娱乐系统和数字座舱开发领域,QNX Screen图形系统扮演着至关重要的角色。作为黑莓QNX实时操作系统中的核心图形框架,它提供了高性能、低延迟的图形显示能力…...
数据网格(Data Mesh):下一代数据架构的核心思想与实践
在数字化转型的浪潮中,数据已成为企业最核心的资产。然而,传统的数据架构,如集中式数据湖和数据仓库,正面临着前所未有的挑战:数据孤岛林立、数据质量参差不齐、业务响应缓慢、维护成本高昂。这些问题严重制约了企业数…...
基于 Git Flow 的团队协作与发布流程实践
在软件开发过程中,随着团队规模扩大、需求频繁迭代以及线上版本持续演进,如何管理代码分支成为影响研发效率的重要问题。上图展示的是一种经典的 Git 分支管理模型 —— Git Flow。 它通过明确的分支职责与合并策略,实现:功能开发…...
【VibeCoding系列教程02】2026年AI编程避坑实录:这三大误区,让我多走了半年弯路
你们有没有发现,人这辈子最大的敌人不是别人,是自己脑子里那些乱七八糟的想法。前两天有个粉丝私信我,说老哥,我看你上次说Vibe Coding挺猛的,我也想学,但我有三个顾虑。我说你说说看。他说第一,…...
3D Slicer完整指南:免费医学影像可视化的终极解决方案
3D Slicer完整指南:免费医学影像可视化的终极解决方案 【免费下载链接】Slicer Multi-platform, free open source software for visualization and image computing. 项目地址: https://gitcode.com/gh_mirrors/sl/Slicer 3D Slicer是一款功能强大的跨平台医…...
【Lovable开发避坑红宝书】:17个被大厂隐藏的移动端情感设计陷阱及修复代码模板
更多请点击: https://intelliparadigm.com 第一章:Lovable移动端情感设计的底层认知与价值重定义 Lovable移动端情感设计并非界面动效或拟物图标的技术叠加,而是以人类情绪反馈回路为锚点,重构交互系统底层逻辑的设计范式。它要求…...
PET模型完全指南:如何利用完形填空问题实现少样本文本分类与自然语言推理
PET模型完全指南:如何利用完形填空问题实现少样本文本分类与自然语言推理 【免费下载链接】pet This repository contains the code for "Exploiting Cloze Questions for Few-Shot Text Classification and Natural Language Inference" 项目地址: htt…...
军规零外源设备要求,无感定位完全替代UWB硬件堆叠方案
军规零外源设备要求,无感定位完全替代UWB硬件堆叠方案军队营区管控、战备执勤、野外演训、涉密阵地等场景,严格遵循军规装备管理准则,奉行零外源附加设备硬性管控标准,严禁额外加装大量外置终端、基站、线缆类附属设施。传统UWB定…...
