在MCUXpresso IDE中建立使用静态库的工程 - 指南

news/2025/10/24 16:52:40/文章来源:https://www.cnblogs.com/lxjshuju/p/19163776

文章目录

    • 在MCUXpresso IDE中建立使用静态库的工程
    • 概述
    • 笔记
    • 将工作区清空
    • 建立库工程
    • 建立主工程
    • 验证
    • END

在MCUXpresso IDE中建立使用静态库的工程

概述

在做Smoothieware工程移植到MCUXpresso IDE的任务。
查看编译日志,发现Smoothieware分为2个工程,一个主工程lpc1768, 一个静态库工程mbed-lpc1768.
我前面实验,是将所有代码都在一个工程中编译,编译出来的elf在MCU中装不下。当然原因很多。
但是我想严格按照Smoothieware的做法来,也将工程分为2个工程,一个主工程a,一个库工程b.
先编译b, 再编译a(a中链接b, 并使用b的接口)。

做了一个实验,验证了建立这种2个工程的例子,确实可以。

笔记

将工作区清空

在这里插入图片描述
在这里插入图片描述
头2个文件夹是工作区用的,不能删
后面3个logs文件夹是硬件调试器的单步调试连接日志,是自动产生的,不用删(删了也会再产生)。

建立库工程

新建c++工程
在这里插入图片描述
MCU选1769
在这里插入图片描述
选c++静态库工程
在这里插入图片描述
给定静态库工程名称
在这里插入图片描述
不要选LpcOpen库和CMSIS库
在这里插入图片描述

在这里插入图片描述
语言标准选2011,除了src目录,不需要建立inc目录
在这里插入图片描述
新建inc目录
在这里插入图片描述
在这里插入图片描述
在inc目录中新建c++的.h文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同理,在src目录中建立实现文件my_lib.cpp
将工程根目录加入工程的包含路径。
在这里插入图片描述
填写my_lib.h内容如下

// @file my_lib.h
// @brief only test static library's interface
#ifndef __MY_LIB_H__
#define __MY_LIB_H__
int add(int x, int y);
#endif // #ifndef __MY_LIB_H__

填写my_lib.cpp内容如下

// @file my_lib.cpp
#include "inc/my_lib.h"
int add(int x, int y)
{
return  (x + y);
}

编译通过。

17:53:44 **** Incremental Build of configuration Debug for project my_lib ****
make -r -j16 all
make[1]: Nothing to be done for 'main-build'.
Performing post-build steps
arm-none-eabi-size "libmy_lib.a" ; # arm-none-eabi-objdump -h -S "libmy_lib.a" >"libmy_lib.lss"
text	   data	    bss	    dec	    hex	filename
26	      0	      0	     26	     1a	my_lib.o (ex libmy_lib.a)
17:53:45 Build Finished. 0 errors, 0 warnings. (took 475ms)

建立主工程

在同一个工作区中,再建立主工程。
以下是不同的地方,相同的地方请参考静态库工程的建立。
选c++工程
在这里插入图片描述
在这里插入图片描述
不选crp
在这里插入图片描述
在主工程的my_main.cpp中加入库函数调用。

/*
* Copyright 2022 NXP
* NXP confidential.
* This software is owned or controlled by NXP and may only be used strictly
* in accordance with the applicable license terms.  By expressly accepting
* such terms or by downloading, installing, activating and/or otherwise using
* the software, you are agreeing that you have read, and that you agree to
* comply with and are bound by, such license terms.  If you do not agree to
* be bound by the applicable license terms, then you may not retain, install,
* activate or otherwise use the software.
*/
#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif
#include <cr_section_macros.h>// TODO: insert other include files here#include "my_lib.h"// TODO: insert other definitions and declarations hereint main(void) {// TODO: insert code hereint z = add(3, 5);// Force the counter to be placed into memoryvolatile static int i = z ;// Enter an infinite loop, just incrementing a counterwhile(1) {i++ ;// "Dummy" NOP to allow source level single// stepping of tight while() loop__asm volatile ("nop");}return 0 ;}

设置头文件路径
在这里插入图片描述
增加要链接的库名称和库搜索路径
在这里插入图片描述
编译通过

Finished building: ../src/cr_cpp_config.cpp
Finished building: ../src/cr_startup_lpc175x_6x.cpp
Finished building: ../src/crp.c
Finished building: ../src/my_main.cpp
Building target: my_main.axf
Invoking: MCU C++ Linker
arm-none-eabi-c++ -nostdlib -L"D:\my_tmp\nxp_dev\ws\my_lib\Debug" -Xlinker -Map="my_main.map" -Xlinker --cref -Xlinker --gc-sections -Xlinker -print-memory-usage -mcpu=cortex-m3 -mthumb -T "my_main_Debug.ld" -o "my_main.axf" ./src/cr_cpp_config.o ./src/cr_startup_lpc175x_6x.o ./src/crp.o ./src/my_main.o    -lmy_lib
Memory region         Used Size  Region Size  %age Used
MFlash512:       16048 B       512 KB      3.06%
RamLoc32:        1828 B        32 KB      5.58%
RamAHB32:           0 B        32 KB      0.00%
Finished building target: my_main.axf
Performing post-build steps
arm-none-eabi-size "my_main.axf"; # arm-none-eabi-objcopy -v -O binary "my_main.axf" "my_main.bin" ; # checksum -p LPC1769 -d "my_main.bin";
text	   data	    bss	    dec	    hex	filename
14668	   1380	    444	  16492	   406c	my_main.axf
18:08:44 Build Finished. 0 errors, 0 warnings. (took 2s.351ms)

验证

接上1769板子, 选SWD调试,可以单步调试,接口调用正确,且可以单步调试进入接口。

END

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南

本文详解如何利用 hiAppEvent 监控并获取 sourcemap、debug so 等核心产物,剖析了 hstack 工具如何将混淆的 Native 与 ArkTS 堆栈还原为源码,助力开发者掌握异常分析方法,提升应用稳定性。作者:杨兰馨(楠瑆) 背…

2025年江苏博士后微服务公司权威推荐榜单:博士后服务团/高层次人才服务/高层次人才引进源头公司精选

汇聚顶尖人才资源,构建创新驱动发展新引擎 在创新驱动发展的时代背景下,江苏省作为科技与人才高地,对博士后等高层次人才的需求日益增长。博士后微服务机构作为连接政府、企业、高校和人才的桥梁,已成为推动区域科…

RFSOC学习记录(六)混频模式分析

RFSOC学习记录(六),简要介绍混频模式以及利用xilinx官方频率规划器介绍混频​ 混频 混频器(Mixer)是RFSOC通过ip核实现在数字域的频率搬移,主要功能是在不改变采样率的情况下,把信号的频谱中心移动到目标频率附…

每周读书与学习-JMeter主要元件详细介绍(二)函数助手

每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。 1、函数助手 函数助手是…

Launcher 桌面源码笔记一(3D车模桌面)

Launcher 桌面源码笔记一(3D车模桌面)3D车模通过TaskView显示在Launcher,首先需要知道,为什么要用TaskView,而不是Activity,然后在说加载流程 1、surface比activity等效率更高,特别是针对车模跟地图等重量级场景…

Microsoft Visual C++ 运行库安装教程(最新版完整指南|DLL缺失修复方案)

前言 在 Windows 系统中,不论是开发软件、运行大型 3D 游戏,还是使用视频剪辑、图形处理工具,许多人都会遇到这样让人头疼的错误提示: *** 系统缺少 msvcp140.dll** *** 无法启动程序,因为丢失 vcruntime140_1.dl…

2025年BPM系统排名深度测评:5大主流厂商哪家适合你?

在数字化转型加速的商业环境中,企业对业务流程的精细化管理需求日益迫切。BPM系统(业务流程管理系统)作为优化流程、提升效率的核心工具,通过建模、自动化、监控与优化全流程,帮助企业打破信息孤岛、降低运营成本…

2025 年硫酸钡板生产厂家最新推荐排行榜:结合协会测评权威数据,揭晓实力企业高纯度/ct 室/牙科/辐射硫酸钡板公司推荐

引言 在射线防护领域,硫酸钡板的质量与性能至关重要。为给采购方提供可靠参考,本次 2025 年硫酸钡板生产厂家最新推荐排行榜,由中国辐射防护器材协会联合行业专家团队开展测评并发布。测评过程严格遵循《射线防护材…

2025 年最新推荐!软件验收测试公司最新排行榜,揭秘具备 CMA/CNAS 资质的靠谱品牌可靠/权威/知名的软件验收测试公司推荐

引言 据中国软件测评行业协会 2024 年度报告显示,国内软件验收测试机构合规率仅 68%,超三成机构因测评方法不规范导致测试结果偏差率达 15% 以上。在数字化转型加速的当下,科学的测评方法成为保障软件质量的核心。当…

Ollama大模型推理场景下3090和4090性能实测

使用Ollama的快速模型部署,来实测英伟达的RTX 3090和RTX 4090这两张显卡,在大语言模型推理场景中的性能差异。 选择 Qwen3的模型进行测试,考虑到显存都是24GB,分别选择一个FP16精度和一个Q4_K_M量化后的大模型进行…

OSI七层网络参考模型(Leo)

OSI七层网络参考模型层级 说明7. 应用层 对应用程序提供接口6. 表示层 进行数据格式的转换,以确保一个系统生成的应用层数据能够被另外一个系统的应用层所识别和理解。5. 会话层 在通信双方之间建立、管理和终止会话。…

2025 年最新推荐河道护栏源头厂家口碑榜,聚焦全流程服务与高性价比之选铝合金/绳索/不锈钢河道护栏公司推荐

引言 当前河道护栏采购市场存在诸多痛点,给项目方带来极大困扰。部分厂家仅负责生产,安装、物流等后续环节需客户自行对接,不仅增加沟通成本,还易因衔接问题导致工程延期;市场上产品质量参差不齐,劣质材料制成的…

ABP vNext 基础四层

ABP vNext Nuget 包的介绍 ABP Framework(尤其是 ABP vNext)的官方 NuGet 包以 Volo.Abp.XXX 命名,覆盖了框架核心功能、模块、集成组件等多个层面。这些包按功能可分为核心基础设施、应用层组件、数据访问、身份认…

2025 年管道修补器源头厂家最新推荐排行榜:揭秘行业内具备全流程管控能力的靠谱厂商及优质产品选型指南加长/铸铁/弯头/卡箍式管道修补器公司推荐

引言 在工业、市政、化工、水务、能源等领域,管道系统是介质输送的核心 “血管”,其安全稳定运行对行业生产效率与安全至关重要。但当前管道泄漏、破损问题频发,据中国管道工业协会 2024 年度测评数据显示,因管道修…

实用指南:YOLO系列——实时屏幕检测

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

信号(Signal)、信号量(Semaphore)

Django的信号机制 Django 的信号机制是一套解耦工具,核心作用是:当项目中发生特定事件(如模型保存、用户登录)时,自动触发预设的操作,无需在事件发生处直接调用这些操作,从而减少代码耦合。 什么是信号通俗来说…

在 macOS 中遇到 brew 命令不存在的问题

在 macOS 中遇到 brew 命令不存在的问题Posted on 2025-10-24 16:38 挥辉 阅读(0) 评论(0) 收藏 举报在 macOS 中遇到 brew 命令不存在的问题,通常是因为 Homebrew 未安装或未正确配置环境变量。以下是解决方法:…

在线聊天室

在线聊天室,输入用户名,房间名和密码,就可以进入同一个聊天室。(聊天室唯一性由房间名和密码的hash保证) https://peersuite.space/

2025 年亚克力大型鱼缸厂家联系方式推荐:江苏金穗的全产业链服务与定制化技术优势解析

行业背景 当下,商业展览、高端酒店、私人别墅等领域对亚克力大型鱼缸的需求日益增长,这类鱼缸因通透美观、空间适配性强等特点,成为提升环境档次的重要元素。但行业发展面临不少挑战:部分厂家缺乏厚板加工能力,无…

2025 年海洋水族馆厂家联系方式推荐:江苏金穗亚克力定制服务与工程案例,泳池 / 鱼缸项目解决方案

行业背景 当前海洋水族馆行业蓬勃发展,随着文旅产业升级与消费需求多元化,市场对高品质亚克力配套产品的需求持续攀升。据行业数据显示,国内海洋馆、水族馆建设项目年均增长 15% 以上,同时家庭高端鱼缸、商业无边泳…