gpt4 book ai didi

c - 如何创建一个库,其中链接器仅链接我的程序使用的函数?

转载 作者:行者123 更新时间:2023-12-04 11:20:01 24 4
gpt4 key购买 nike

我正在为 8 位 AVR 微 Controller (AVR-GCC) 编译应用程序。为减少微 Controller 中闪存的使用,链接器仅链接应用程序代码使用的函数 至关重要。我正在编写自己的库,并且遇到了以下语句。

“为每个代码模块编写一个函数。这将编译为每个对象模块一个函数”- 来源:http://nongnu.org/avr-libc/user-manual/library.html

这是什么意思? 如何为我的每个函数创建单独的目标文件?现在我的库中只有一个 .h 文件和一个 .c 文件。

最佳答案

“每个代码模块一个函数”是指每个 C 源文件一个函数。这将为每个函数提供一个目标文件。

这看起来很尴尬,使用 GCC 时执行此操作的典型方法是 as described here :

  1. 使用 -fdata-sections -ffunction-sections 选项进行编译,告诉 GCC 将数据和函数放在单独的部分中。节只是目标文件中的一个概念,基本上是一个独立的区域。单个目标文件可以包含多个部分。
  2. 然后使用--gc-sections 链接,告诉链接器对未使用的部分进行垃圾回收。这将删除死代码。

关于c - 如何创建一个库,其中链接器仅链接我的程序使用的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42576155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com