GCC - 如何停止链接 malloc?

2023-12-01

我正在努力将我的代码缩减到最小的骨架大小!我使用的是只有 32k 闪存的 STM32F0,需要很大一部分闪存用于数据存储。我的代码已经有大约 20k 闪存大小!其中一些是由于使用了 STM32 HAL 函数,我可以在以后需要时对其进行解释和优化。

然而,我对闪存的最大消耗是所有隐式包含的库例程。我似乎无法删除这些功能。我的代码或任何 HAL 代码中都没有调用它们。 _malloc_r(1.3k 字节)和 __vfiprintf_r(3kB)等函数以及许多其他函数正在使用我的闪存的很大一部分。我想这些都是libc的函数。我不使用这些,希望它们消失!

有人知道如何删除这些吗?

我尝试过不同的优化级别和链接器选项,但到目前为止还没有运气。我尝试过 -nostdlib 和 --specs=nosys.specs 没有任何变化。如果我删除包含 _exit 等函数定义的文件,我会收到链接器错误,表明该库仍然包含在内并且需要这些。链接器图还确认了许多不需要的函数的存在!

有什么建议么?


当您想知道什么占用了空间,或者为什么链接了函数和库时,请生成一个带有交叉引用的映射文件 - 类似于“-Wl,-Map=program.map,--cref”。用文本编辑器查看该文件,您就会明白为什么包含了像 malloc 这样的函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GCC - 如何停止链接 malloc? 的相关文章

  • Lambda、封闭变量、显示类、可序列化性和流行层

    我已经为 Compact Framework 实现了一个流行层 包括BinaryFormatter 类似序列化器 我希望能够在适当的情况下序列化编译器生成的类 这些类是由 lambda 和迭代器等产生的 这样如果 例如 lambda 及其封
  • Linux 缓冲区溢出环境变量

    我一直在审查不同类型的缓冲区溢出 并遇到了一个我不记得为什么会发生的问题 下面的代码是我尝试执行缓冲区溢出的程序 include
  • 是否已经有一些基于 std::vector 的 set/map 实现?

    对于小型集合或地图 通常使用排序向量而不是基于树的向量要快得多set map 特别是对于 5 10 个元素的情况 LLVM 有一些类本着这种精神 http llvm org docs ProgrammersManual html ds se
  • 如何将 list 对象附加到另一个对象

    在 C 中 我有两个list
  • 在 WinForms 中显示输入对话框

    我想在我的 WinForm 应用程序中显示输入模式 我浏览过网络 但没有找到执行此操作的良好模式 我知道我必须创建另一个表单 并使用 ShowDialog 方法 你是对的 请注意 模式对话框在关闭时不会自动处理 与非模式对话框不同 因此您需
  • boost::unordered_map 是...有序的吗?

    我有一个 boost unordered map 但它看起来是有序的 给我一种压倒性的 你做错了 的感觉 为什么输出是这样的 我希望底层的哈希算法能够随机化这个顺序 include
  • 提高 ASP.NET/C# 编译速度的最佳方法是什么?

    更新 请将您的答案集中在硬件解决方案上 您使用什么硬件 工具 插件来提高 ASP NET 编译和首次执行速度 我们正在寻找固态硬盘来加快速度 但现在价格确实很高 我现在有两个 RAID 0 的 7200 rpm 硬盘 但我对性能不再满意 所
  • Clang 使用 -nostdlib 生成崩溃代码

    我正在尝试为可执行文件设置自己的运行时环境 但无法使用 clang v3 4 1ubuntu1 目标 x86 64 pc linux gnu 来生成没有段错误的可执行文件 我已将问题简化为以下内容 如果我有一个文件 crt1 c 除了满足
  • std::atomic 是否会阻止非原子变量对原子变量进行重新排序

    问题很简单 问 如果我有 settings N STNGS used by many threads std atomic
  • 委托:方法名称预期错误

    我正在尝试让以下简单的委托示例正常工作 根据我从中取出的一本书 应该没问题 但我得到了Method name expected error namespace TestConsoleApp class Program private del
  • 枚举和枚举类之间的区别[重复]

    这个问题在这里已经有答案了 谁能解释一下两者之间的区别 enum Type1 type2 And enum class Type1 type2 我经常使用前者 可能太频繁而没有足够的封装 但我从未使用过第二个例子 Thanks enum A
  • Windows Phone 8.1 应用程序多语言

    我正在使用 Visual Studio 2015 在 SilverLight 中创建 Windows Phone 应用程序 8 1 我正在用英语和阿拉伯语创建多语言应用程序 为此 我在项目中创建了 Strings 文件夹 其中包含 en U
  • 为什么这是一个未定义的行为?

    我的回答这个问题 https stackoverflow com q 18706587 845092这个函数是 inline bool divisible15 unsigned int x 286331153 2 32 1 15 40086
  • ASP.NET MVC - 路由 - 具有文件扩展名的操作

    有没有办法实现调用URLhttp mywebsite myarea mycontroller myaction xml这基本上是 假 请求文件 但结果将是一个为动态创建的文件提供服务的操作操作 我试过这个 context MapRoute
  • 如何在c#中打印全尺寸图像

    我正在尝试用 C 打印图像 它是由 Adob e Acrobat 从 PDF 创建的完整 8 5x11 尺寸的 tiff 当我使用下面的代码用 C 打印它时 它垂直打印正确 但水平打印不正确 水平方向被推了大约半英寸 我将图像的原点设置为
  • 对 MFC UI 应用程序进行单元测试吗?

    如何对大型 MFC UI 应用程序进行单元测试 我们有一些大型 MFC 应用程序已经开发了很多年 我们使用一些标准的自动化 QA 工具来运行基本脚本来检查基础知识 文件打开等 这些由 QA 小组在日常构建后运行 但我们希望引入一些程序 以便
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 为什么我能够使用无效的类指针进行函数调用

    在下面的代码片段中 虽然指针未初始化 但调用仍然成功 temp ptr ptr gt func2 是C 语言特性的问题 还是VC 6编译器的作弊 class temp public temp a 9 int func1 return a b
  • 我如何将 C++ 与 VALA 混合起来

    我需要用 C 编写跨平台的 GUI 应用程序 但由于 C 的大多数 GUI 库都有点乏味 而且我对 C NET 非常熟悉 我发现使用 GTK 的代码 Vala 代码非常有趣 并且与其他方式相比有点容易 那么我该如何将 VAlA 与 C 混合
  • 我该怎么做才能完全关闭与mcu的tcpClient连接?

    我现在正在研究与 ESP32 中运行的 tcp 服务器的 tcp 套接字连接 通信工作正常 但我无法关闭连接 在搜索关闭 重置 tcpClient 上的解决方案后 似乎关闭 tcpClient 的正确方法应该是 tcpClient GetS

随机推荐

  • iPad 上仅适用于 iPhone 应用程序的空应用程序图标

    我有一个 iPhone 应用程序 该应用程序未针对在 iPad 上运行进行优化 但它包含 iPad 的所有图标 当我在 iPad 上安装应用程序时 没有图标 另外 当我在 iPad 上从商店下载应用程序时 它没有图标 在 Xcode 9 中
  • 要求/包含到变量中

    我想要求 包含一个文件并将其内容检索到变量中 test php 索引 php Like file get contents 但它仍然应该执行 PHP 代码 这可能吗 如果您包含的文件返回一个变量 包含 php
  • iOS 应用程序:Firebase 动态链接不适用于最新的 Pod 文件

    我们将最新的 Dynamic link Pod 集成到我们的 iOS 应用程序中 每当我们打开 firebase 的链接时 我们的 Appdelegate 中就不会触发任何功能 检查我们在 App delegate 中实现的方法 func
  • setSearchDisplayController 被认为是私有 API?

    我最近提交了一个应用程序进行应用程序审核 但由于使用了私有 API 而被拒绝 我对 iPhone 开发还是有点陌生 所以我想知道是否有人可以帮助我理解这部分是如何被拒绝的 UISearchBar searchBar UISearchBar
  • 身份验证令牌与 ~/.emulator_console_auth_token 不匹配

    我正在尝试通过控制台访问 android 模拟器 最初我输入telnet localhost 5554 然后我看到 接下来我输入auth auth token 我收到以下错误 这里有什么问题吗 我在哪里可以获得这个令牌 谢谢您的帮助 在 W
  • 如果我使用“with”关键字而不是“inline”python,Excel 不会关闭

    我使用 python 使用 win32com client 库刷新 Excel 中的一些电源查询表 如果我将所有内容都写为 内联 第一个版本 Excel 正确关闭 如果我使用 with 语句打开 关闭 Excel 和工作簿 第二版 Exce
  • 远程桌面协议 C 或 Objective-C 库

    有谁知道有一个用 C 或 Objective C 编写的非 GPL 的 RDP 库吗 我是 CoRD 的开发人员 CoRD 是基于 rdesktop 的 Cocoa RDP 客户端 据我所知 没有松散许可的 RDP 实施 据我所知 rdes
  • 是否有必要使用正则表达式对 String.replace() 调用中的替换字符串进行转义?

    想知道是否有必要转义 Javascript 中替换操作的替换字符串中的某些字符 我所拥有的是这样的 let t links let t2 t replace links labels console log t2 控制台输出为 labels
  • 将日期/时间拆分为 2 列

    我目前有将日期和时间输出到 A 列的代码 但我希望它们是分开的 A 列中的日期 B 列中的时间 我尝试通过录制宏并在 Excel 中执行定界过程来解决这个问题 但它并没有像我想要的那样工作 我主要想知道的是这是否可能 或者我应该尝试替代编码
  • C# 从字符串中提取名称

    我想从下面的字符串中提取 James Brown 但我并不总是知道该名称是什么 逗号让我有些困难 所以你建议如何提取 James Brown OU 詹姆斯 布朗 OU 测试 DC 内部 DC 网络 Thanks 正则表达式可能是您最好的方法
  • Ag Grid 动态改变细胞颜色

    我们正在尝试动态更改 Ag Grid 中列的单元格颜色 这是代码 我没有包含从数据库中提取数据的代码 因为它工作得很好 HTML 定义网格
  • 使用 WPF 应用程序替换 Windows shell

    我想用我的 WPF 应用程序替换 Windows 7 Shell 32 和 64 位 它应该作为 Shell 运行 目标是 WPF 应用程序将启动我的 Kiosk 应用程序并提供一些服务 我的问题是 如何用我的 Windows 7 Shel
  • powershell 中 ForEach 和 ForEach-Object 的区别

    有什么区别吗ForEach and ForEach Object 我有一个像这样的小代码 工作正常 txt Get Content C temp 000 txt result foreach line in txt line replace
  • 当我引用另一个 javascript 文件中的图像时,drawImage 不起作用

    我将在下面展示纯 JavaScript 我有这两行代码 在我看来 它们执行完全相同的操作 但其中一行报告错误 这出现在名为 Rendering coffee 的文件中 这是两行 在咖啡脚本中 ctx drawImage document g
  • 无法将嵌套对象 json 发布到节点表达主体解析器

    您好 我正在使用 Node Express 和 Mongo 创建示例 REST api 我正在使用 bodyParser 中间件来解析表单数据 对于简单的对象来说它工作得很好 var user name test age 20 req bo
  • 组合两个数据框并聚合

    我有以下格式的 2 个数据框 dt1 id col1 col2 col3 col4 1 2 3 1 2 2 3 4 1 1 3 1 1 1 1 4 1 2 1 2 5 1 1 1 1 6 1 2 1 2 dt2 id col1 col2 c
  • React Native - VirtualizedLists 永远不应该嵌套在具有相同方向的普通 ScrollViews 中

    我正在使用 expo cli 为现有的 Web 应用程序开发一个应用程序 我已完成主屏幕 但在使用时收到此警告ScrollView VirtualizedLists 永远不应该嵌套在普通的 ScrollViews 中 相同的方向 使用另一个
  • 将文件添加到文件夹时触发 VBScript [重复]

    这个问题在这里已经有答案了 我希望自动化一些任务 我需要将文件从一个文件夹移动到另一个文件夹 我写了下面的脚本 运行良好 但我的要求是当创建文件或将文件添加到文件夹时在后台自动触发此 VB 脚本 Script Begins With Cre
  • 如何将 pandas 数据帧写入 Vertica?

    我在 pandas 数据框中有一些数据集 我希望将其写入 Vertica 我已经使用 vertica python 库创建了我的表 将数据帧写入 Vertica 的最佳方式是什么 通常 在连接到 Vertica 时 您可以使用 Postgr
  • GCC - 如何停止链接 malloc?

    我正在努力将我的代码缩减到最小的骨架大小 我使用的是只有 32k 闪存的 STM32F0 需要很大一部分闪存用于数据存储 我的代码已经有大约 20k 闪存大小 其中一些是由于使用了 STM32 HAL 函数 我可以在以后需要时对其进行解释和