gnu ld 链接整个目标文件还是仅链接所需的函数?

2024-01-13

我们有一个库和一个可执行文件,那就是静态地链接到库。我们希望最小化最终可执行文件的程序空间。

根据 avr-libc 的文档:

链接器链接该函数所在的整个对象模块 http://www.nongnu.org/avr-libc/user-manual/library.html

另一方面,我的同事们一致认为,在某些过程中,链接器会丢弃所有未使用的函数。

那么谁是正确的还是我误解了什么?整个 gcc 的答案是一致的还是我们这里只讨论 avr 端口?


除非您告诉它,否则它不会执行死代码剥离。为此,您需要使用以下命令编译所有内容:


-fdata-sections -ffunction-sections  

以标记所有数据和功能。当与 GCC 链接时,您需要传递:


-Wl,--gc-sections  

为了垃圾收集所有未使用的部分。

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

gnu ld 链接整个目标文件还是仅链接所需的函数? 的相关文章

  • Cygwin 中的库“rt”和“dl”

    也许这很愚蠢 但我无法找出必须在 Cygwin 中安装哪个软件包才能修复以下缺失的库 config status creating unix buildinfo config status creating include HsUnixCo
  • 具有动态依赖关系的静态库

    我遇到过很多类似的问题 但我并没有真正得到答案 因此 我有一个依赖于 Static lib 的 App exe 而 Static lib 又依赖于动态库 Dynamic dll 在 Static lib 中 我链接到 Dynamic lib
  • 与 Boost 和 ncurses 的静态链接

    我正在制作一个基本的角色扮演游戏 我想静态地包含 Boost 库 以便运行我的游戏的人不需要拥有它们 我研究并查找了所有你需要做的就是添加 static到命令行编译 所以我的命令是这样的 g static o karthas o lncur
  • Opencv 静态构建,jpeg,png,tiff 不是静态链接?

    我将 opencv 233 构建为静态库 但是当我在应用程序中使用它时 在调用 cv imwrite 时会出现链接错误 tiff png jasp 库未链接 这是我应该在我的应用程序中链接这些我自己的意图还是我错误地构建了它 我希望第 3
  • 如何在与 gcc 链接时绕过“多个定义的符号”

    我使用的是具有 gcc 2 95 3 的旧系统 我必须链接两个对象 尽管它们彼此无关 但它们每个都有相似的命名方法 我无法重命名它们中的任何一个 但我希望有一种方法来构建它们 以免链接器抱怨 它所抱怨的方法都是由对象内的类在内部调用的 我能
  • ld 链接问题:/usr/bin/ld: 找不到 [libraryname]

    我使用 Qmake 在 Ubuntu 9 10 上构建共享库 此共享库 A 依赖于另一个共享库 B B项目已成功建设 在项目 A 的 pro 文件中 我的 LIBS 变量如下所示 LIBS L datelib bin llibdatelib
  • 将 FFTW 链接到 Android NDK 应用程序

    我目前正在编写一个流派分类应用程序 作为我计算机工程的最后一年项目 我最初用 C 语言编写了特征提取代码 实现 FFTW 现在我需要通过 NDK 在 Android 上实现它 这是我的第一个 NDK 项目 所以我仍在掌握一些东西 但我已经根
  • -fsanitize 在 GCC-6.1 中不使用 gold 链接器

    更新 2016 年 9 月 30 日 Ubuntu 版本的 gcc 6 2 Ubuntu 6 2 0 3ubuntu11 16 04 6 2 0 20160901 不再有这个问题 我使用的是 Ubuntu 版本的 gcc 6 1 1 Ubu
  • 意外的未定义引用

    我收到未定义的引用错误 不知道原因 所以我有 2 个创建静态库的文件 keyboard input c keyboard input h 这是 h 文件的内容 ifndef MOD KBINPUT define MOD KBINPUT in
  • Xcode 多个静态库和重复符号

    我正在开发一个 iPad 应用程序 它依赖于两个静态实用程序库 libBFSDK 和 libBetfair Platform 这两个静态库都包含 AFNetworking 当我尝试在 iPad 应用程序中包含两个静态库时 我收到如下链接错误
  • Android NDK:使用预编译静态库进行链接

    我正在尝试将 Jnetpcap 移植到 Android 以便使用它来解析 pcap 文件 Jnetpcap 是使用 JNI 的 libpcap 的 java 包装器 我已经使用 android 的源代码树将 libpcap 编译为静态库 当
  • 从 ARC 静态库访问 @property 时,ARC 应用程序崩溃

    我有一个 ARC 自动引用计数 questions tagged automatic reference counting 构建静态库 也称为 ARC 的应用程序 该应用程序将正常启动 但当执行读取或写入静态库中的 property 的操作
  • 静态链接 libpng 到共享库

    我已将问题简化为最小的 test c include png h int function printf ld long png create read struct 编译用 gcc shared fPIC test c o test so
  • Xcode:复制标头:公共、私有、项目?

    我正在构建一个 Cocoa Touch 静态库 我应该如何决定是否将头文件复制为公共 私有或项目 Public 该界面已最终确定 可供产品的客户使用 公共标头作为可读源代码包含在产品中 不受限制 Private 该界面不适用于您的客户 或者
  • ld:警告:__DATA/__objc_imageinfo__DATA 节的大小意外地大

    有谁知道这个警告是什么意思 接下来是错误 Command Developer Platforms iPhoneSimulator platform Developer usr bin llvm gcc 4 2 failed with exi
  • 符号查找错误未定义符号,但所有符号似乎都存在

    可执行文件似乎无法解析链接库中的符号 LD DEBUG libs 的相关输出表明加载了正确的库 6557 usr lib libcharon so 0 error symbol lookup error undefined symbol a
  • 如何使用 DLL 来模拟静态库的“应用程序内全局变量的多个实例”行为?

    我们有一个用 C C 编写的应用程序 它被分解为单个 EXE 和多个 DLL 这些 DLL 中的每一个都使用相同的静态库 utilities lib 实用程序静态库中的任何全局变量实际上在应用程序内运行时都会有多个实例 每个模块 即 DLL
  • Xcode 找不到我的静态库!

    这是链接器错误 i686 apple darwin10 gcc 4 2 1 Users william Documents SettingsLibrary build Debug iphonesimulator libSettingsLib
  • 静态和动态链接同一个库

    我有一个静态链接到库的程序 libA 2 0 a 并且还动态链接到另一个库 libB so libB so还动态链接到旧版本的 libA libA 1 0 so 这个配置可以吗 如果是这样 系统如何知道使用来自libA 2 0 a对于我的程
  • 如何构建 Objective-C 静态库? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些 Objective C 类 目前在 Cocoa 应用程序 Mac OS X 和 Cocoa Touch 应用程序 iOS 中

随机推荐

  • 撇号的正则表达式

    我正在寻找一个正则表达式来查找字符串中的撇号 该字符串也可以是一个句子 我尝试了一个简单的正则表达式 如 但它只检查字符串中的一个字符 如何检查整个字符串 例如 Hello I have many PC s 将是一场比赛 但 I dont
  • 保持 git clean 历史记录的最佳实践是什么?

    在阅读有关 git 工作流程的文章时 我想知道历史重写的适当性 我的工作流程以及我想象的许多其他人的工作流程是这样的 获取 Github 存储库 我们称其为rep1 制作一个叉子 这将是rep2 git 将其克隆到本地以进行使用 即rep3
  • “ascii”编解码器无法对位置 * 或不在范围内的字符进行编码 (128)

    stackoverflow 上有一些线程 但我找不到整个问题的有效解决方案 我从 urllib 读取函数收集了大量文本数据并将其存储在 pickle 文件中 现在我想将这些数据写入文件 写作时我遇到类似的错误 ascii codec can
  • 如何在使用 Eigen Library C++ 时删除特定行或列

    我正在为我的项目使用 Eigen 库 我正在搜索如何从特征中的给定矩阵中删除特定行或列 我没有成功 MatrixXd A X1 X2 X3 X4 Y1 Y2 Y3 Y4 Z1 Z2 Z3 Z4 A1 A2 A3 A4 MatrixXd At
  • SQL Server中两个日期之间的月差

    请参考以下示例 并请告诉我您的想法 declare EmployeeStartDate datetime 01 Sep 2013 declare EmployeeEndDate datetime 15 Nov 2013 select Dat
  • ARCore 在按钮单击时保存相机图像 (Unity C#)

    我有一个类似的问题 例如以下三个问题 将 Unity ARCore 中的 AcquireCameraImageBytes 作为图像保存到存储 https stackoverflow com questions 49579334 save a
  • 我可以从 Google 表格脚本生成文件吗?

    我正在使用 Google Sheets 为我正在做的事情制作一堆数值数据的原型 有没有办法将子集导出到文本文件 实际上 我的目标是导出一个可以直接包含在另一个项目的构建中的文件 那么有没有办法生成文本文件供下载呢 如果您有 Google A
  • 文件读取器内存泄漏

    我正在使用 FileReader 将图像文件上传到客户端 用于数据获取和缩略图显示 我注意到的是 在页面进程上 在任务管理器中 内存只会越来越高 当进程停止时 内存保持在高位并且永远不会下降 你能告诉我我在这里做错了什么吗 如需查看 请上传
  • 找不到模块:无法解析“@date-io/date-fns”

    我在用着反应材料用户界面 https material ui com我收到此错误 找不到模块 无法解析 date io date fns 以下是我的 package json 文件中的依赖项 dependencies date io dat
  • 当需要日志记录时,您会考虑哪种设计模式?

    我正在开发的应用程序需要将操作 执行该操作的用户以及操作时间记录到数据库中 哪种设计模式最流行 最适合日志记录 我在想命令模式需要当前用户和操作 执行操作并写入日志 你怎么认为 我可以考虑其他替代方案吗 谢谢 您可以使用AOP http e
  • 如何删除Jenkins下的View而不影响现有作业

    我想删除Jenkins下的Views而不影响视图下的Jobs 我之所以问这个问题 是因为即使以管理员身份删除它后 我也无法输入相同的视图名称 我检查了 Jenkins 文件夹下的配置文件并尝试编辑视图名称 但这不起作用 我需要确认以下脚本是
  • 图钉调整绑定缩放级别大小

    我将 WinRT 与 bing 地图结合使用 并尝试在缩放地图时设置 以编程方式 图钉的 RenderTransform 值 我试过这个Solution http social msdn microsoft com Forums en US
  • Django - 如何在不修改的情况下扩展第 3 方模型

    我想向数据库表添加一列 但我不想修改第 3 方模块 以防我将来需要 决定升级模块 有没有办法可以在我的代码中添加此字段 以便在新版本中我不必手动添加该字段 您可以使用 ModelName add to class 或 contribute
  • pip3 ImportError:无法导入名称“IncompleteRead”

    通过安装模块时遇到问题pip3 尝试了 2014 年 12 月以来投票最高的帖子中的一些建议 但仍然得到以下结果 sudo pip3 install send2trash Traceback most recent call last Fi
  • 使用 GAE 限制对静态文件的访问

    我有一个静态文件 我不想公开该文件 有没有办法限制 app yaml 的访问 使其只能由自己的域加载 基于 web2py 的解决方案也很受欢迎 因为我在 GAE 之上使用它 Thanks 您可以使用 登录 必需 来限制对其的访问 以要求使用
  • RuntimeError: 维度超出范围(预期在 [-1, 0] 范围内,但得到 1)

    我使用 Pytorch Unet 模型 将图像作为输入 同时将标签作为输入图像掩码 并在其上训练数据集 我从其他地方获得的 Unet 模型 我使用交叉熵损失作为损失函数 但我得到了这个维度超出范围的错误 RuntimeError Trace
  • 为什么无法从 Excel 互操作中设置强制转换对象?

    尝试获取对工作表的引用 使用 Excel 互操作 Excel Application xl new Excel ApplicationClass Excel Workbooks xlWorkBooks xl Workbooks Excel
  • Cytoscape.js - 将核心背景设置为深色?

    我正在尝试将边缘渲染为白色 因此希望在 cytoscape js 视口中使用黑色背景 我尝试修改 div 上的 cssid cy 但这似乎被覆盖了 在文档中 我只能找到在导出到图像时设置背景颜色的功能 例如cy jpg 但这不是我想要的 我
  • (未使用的)GLSL 制服/输入/输出是否有助于调节压力?

    我不知道制服在记忆中是如何表示的 制服似乎会占用宝贵的寄存器空间 但它们最终会传入 通过 传出到全局内存中 对吧 制服未使用后情况会发生变化吗 编译器可以优化它们吗 在这种情况下 我作为绑定位置变得无效 1 所以我假设是的 制服以 GLSL
  • gnu ld 链接整个目标文件还是仅链接所需的函数?

    我们有一个库和一个可执行文件 那就是静态地链接到库 我们希望最小化最终可执行文件的程序空间 根据 avr libc 的文档 链接器链接该函数所在的整个对象模块 http www nongnu org avr libc user manual