MDK KEIL程序代码编译成静态库文件及库引用笔记教程

1、为什么要编译成库文件

        在商业性的程序代码或软件中,各种静态库、动态库是非常常见的。甚至有许多的开源程序,其开放的源码工程中,也有一些程序代码是并不对外开放的,以一个静态库或动态库和一个头文件及部分说明文件的方式提供给用户,许多的核心实现细节,我们是不能直接看到的。并且,对于已经在企业工作过的开发者,对于这种方式已经习以为常了,但是依然有许多的学生群体及初入工作岗位经验不足的开发者,对于如何将源代码编译成库文件和对库文件的重要性是比较缺少认识的。因此,整理了这篇笔记文章,并且开放出来,供博客粉丝朋友们,一起交流学习。

        将程序代码编译成库文件(Library Files)是软件开发中的一个重要步骤,主要出于以下几个原因:

        ①、代码复用

        ②、模块化开发

        ③、节省内存和磁盘空间

        ④、提高开发效率

        ⑤、便于升级维护

        ⑥、隐藏实现细节

        ⑦、保护源代码安全

2、配置MDK KEIL

        在本文的在MDK KEIL平台实现程序代码编译成库文件教程中,以小米微电机的驱动程序为例。

        为了避免在配置出现什么误操作的情况,建议将整个MDK工程文件备份一下。

①、移除无关源文件

        选中工程名,点击右键选择-->Manage Project ltems,然后选择Project Items,在该窗口中,对需要编译成库的文件进行保留,不需要去除。这一步一定要做!!!

②、移除无关头文件

        根据需要编译成库的代码头文件引用情况,将代码的头文件包含进行修改。实际测试过程中发现,即使这一步未操作,也不会影响库文件的编译。

③、修改编译输出格式

        点击魔术棒-->在弹出的窗口中,选择Output-->勾选Create Library选项。记住Create Library后面的路径,在程序库文件编译后,需要去这个路径下查找库文件。

④、提取库文件

        在前面几步的操作完成后,点击编译,编译完成后,会编译信息会提示正常。

        进入到输出路径下,可以看到编译出来的库文件,根据实际情况,对库文件进行重命名,并将lib库放到对应的源码路径下,替换源码。

3、测试库文件

        在未编译库文件时,整个工程代码正常编译,程序烧录下载后,设备正常运行。

        程序编译成库文件文件后,去除工程中加入的源文件,引入库文件,并将编译输出模式,更改为Create Executable,重新编译工程。

        如图所示,编译正常,并且下载到设备中后,设备正常运行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux系列】TEE 命令:同时输出到终端和文件

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

AmazonS3部署以及nacos配置参数

AmazonS3部署 因为涉及到做的需求的头像的处理,所以需要去找头像的来源,没想到又是我们的老熟人,AmazonS3,巧了已经是第二次用了,上次我是用的别人的工具类去干的,这一次我这边自己编辑具体工具类型。 对应…

谷歌DeepMind被曝抄袭开源成果,论文还中了顶流会议

卡奥斯智能交互引擎是卡奥斯基于海尔近40年工业生产经验积累和卡奥斯7年工业互联网平台建设的最佳实践,基于大语言模型和RAG技术,集合海量工业领域生态资源方优质产品和知识服务,旨在通过智能搜索、连续交互,实时生成个性化的内容…

vue3+ECharts实现可视化中国地图

目录 版本问题解决 中国地图实现 版本问题解决 目前echarts的最新版本为5.5.1 echarts在4.9.0版本以后移除了中国地图,所以如果的你的版本高于4.9.0就需要手动导入中国地图。版本低于或者等于4.9.0则不需要导入。 这里我分享一种导入方法: 1.将项目的…

SQL中的谓词与谓词下推

在 SQL 查询中,谓词(Predicate)是用来对数据进行过滤的条件。它们决定了数据从数据库表中被选择的条件。理解和正确使用 SQL 谓词对于编写高效查询至关重要。 目录 什么是谓词?一个真实的故事SQL 谓词的代码示例比较谓词逻辑谓词…

Gitee简易使用流程(后期优化)

目录 1.修改用户名 2.文件管理 新建文件/文件夹流程如下: 上传文件流程如下: 以主页界面为起点 1.修改用户名 点解右上角的头像--> 点击“账号设置” 点击左边栏里的“个人资料“ 直接修改用户名即可 2.文件管理 选择一个有修改权限仓库&#…

【RAGFlow】Ubuntu系统下实现源码启动RAGFlow

一、RAGFlow 是什么? RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用…

隧道调频广播信号覆盖系统改造-泄漏电缆隧道全线无盲区调频覆盖解决方法探究

隧道调频广播信号覆盖系统改造-泄漏电缆隧道全线无盲区调频覆盖解决方法探究 由北京海特伟业科技有限公司任洪卓发布于2024年7月15日 随着城市交通的不断发展,隧道作为城市交通的重要组成部分,承担着日益增长的交通压力。为了确保行驶在隧道中的车辆能够…

AV1 编码标准中帧内预测技术概述

AV1 编码标准帧内预测 AV1(AOMedia Video 1)是一种开源的视频编码格式,旨在提供比现有标准更高的压缩效率和更好的视频质量。在帧内预测方面,AV1相较于其前身VP9和其他编解码标准,如H.264/AVC和H.265/HEVC,…

【分布式系统】CephFS文件系统之MDS接口详解

目录 一.服务端操作 1.在管理节点创建 mds 服务 2.查看各个节点的 mds 服务(可选) 3.创建存储池,启用 ceph 文件系统 4.查看mds状态,一个up,其余两个待命,目前的工作的是node01上的mds服务 5.创建用户…

做印尼TikTok直播会遇到什么困难?

TikTok直播已成为当下社交娱乐的重要组成部分,越来越多的直播达人在这个平台上崭露头角。特别是海外直播,受到了广大网友的热烈追捧。那么,在进行印尼TikTok直播会遇到哪些困难?这些困难是否可以通过TikTok直播专线来解决呢&#…

DBA 数据库管理 表管理 数据批量处理。表头约束

表管理 建库 库名命名规则:仅可以使用数字、字母、下划线、不能纯数字 不可使用MySQL命令或特殊字符 库名区分字母大小写 加if not exists 命令避免重名报错 create database if not exists gamedb; 建表 drop database if exists gamedb ; 删表…

高频面试题基本总结回顾4(含笔试高频算法整理)

目录 一、基本面试流程回顾 二、基本高频算法题展示 三、基本面试题总结回顾 (一)Java高频面试题整理 (二)JVM相关面试问题整理 (三)MySQL相关面试问题整理 (四)Redis相关面试…

【通信协议-RTCM】MSM语句(1) - 多信号GNSS观测数据消息格式

注释: RTCM响应消息1020为GLONASS星历信息,暂不介绍,前公司暂未研发RTCM消息类型版本的DR/RTK模块,DR/RTK模块仅NMEA消息类型使用 注释: 公司使用的多信号语句类型为MSM4&MSM7,也应该是运用最广泛的语句…

JMeter CSV 参数文件的使用教程

在 JMeter 测试过程中,合理地使用参数化技术是提高测试逼真度的关键步骤。本文将介绍如何通过 CSV 文件实现 JMeter 中的参数化。 设定 CSV 文件 首先,构建一个包含需要参数化数据的 CSV 文件。打开任何文本编辑器,输入希望模拟的用户数据&…

internet download manager(IDM下载器) 6.42.8.2下载安装使用指南

internet download manager(IDM下载器) 6.42.8.2Z是一款功能强大的下载加速工具,能够显著提升您的下载速度,最高可达500%。它不仅能够加速下载,还能对下载任务进行智能调度,并具备恢复中断下载的能力。根据用户评价,无…

Dify中的工具

Dify中的工具分为内置工具(硬编码)和第三方工具(OpenAPI Swagger/ChatGPT Plugin)。工具可被Workflow(工作流)和Agent使用,当然Workflow也可被发布为工具,这样Workflow(工…

git批量删除本地包含某字符串的特定分支

git批量删除本地包含某字符串的特定分支 git branch -a | grep 分支中包含的字符串 | xargs git branch -D git删除本地分支_git查看删除本地分支-CSDN博客文章浏览阅读989次。git branch -d <分支名>可以通过: git branch 查看所有本地分支及其名字&#xff0c;然后删…

PHP中的函数与调用:深入解析与应用

目录 一、函数基础 1.1 函数的概念 1.2 函数的定义 1.3 函数的调用 二、PHP函数的分类 2.1 内置函数 2.2 用户自定义函数 2.3 匿名函数 2.4 递归函数 2.5 回调函数 2.6 魔术方法 三、函数的参数与返回值 3.1 参数传递 3.2 返回值 四、函数的高级特性 4.1 可变函…