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 链接整个目标文件还是仅链接所需的函数? 的相关文章

  • Clang 可以使用 GCC 编译的 .a 库来编译代码吗?

    我的项目目前在 gcc 下编译 它使用Boost ZeroMQ作为静态 a图书馆和一些 so像 SDL 这样的库 我想一路叮当响 但不是现在 我想知道是否可以编译使用的代码 a and so在 gcc 下用 clang 编译的库 是的 就是
  • 将 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
  • Xcode 多个静态库和重复符号

    我正在开发一个 iPad 应用程序 它依赖于两个静态实用程序库 libBFSDK 和 libBetfair Platform 这两个静态库都包含 AFNetworking 当我尝试在 iPad 应用程序中包含两个静态库时 我收到如下链接错误
  • __cxa_pure_virtual 的目的是什么?

    在使用 avr gcc 编译时 我遇到了如下链接器错误 undefined reference to cxa pure virtual 我发现了其中指出 The cxa pure virtualfunction 是一个错误处理程序 在调用纯
  • C:创建静态库并使用 Makefile 进行链接

    我在尝试着了解静态和共享库 http randu org tutorials c libraries php 我想执行以下操作来创建一个单独编译和链接的 makefile 以便创建和链接静态库 形成最终的静态可执行文件 我有以下 Makef
  • Xcode 4 中的静态库

    我太喜欢 Xcode 4 X 中的静态库了 以下是我通常做的步骤 1 为了制作静态库 我打开Xcode new 静态库 然后在项目中添加一些类 然后构建阶段 gt 复制标头 gt 在这里一一添加所有标头 然后我构建该项目 当在 ios 模拟
  • 为什么有些程序需要 .lib 和 .dll 才能运行

    当我要设置我的开发环境时 SDLSimple DirectMediaLayer 我下载了网站提供的包 从readme txt文件我发现我需要两者 lib and dll 我的问题是 我不确定我的理解是否正确 在我看来 lib for win
  • GNU 链接器:适应名称修改算法的更改

    我正在尝试重新编译现有的 C 应用程序 不幸的是 我必须依赖一个专有库 我只有一个预编译的静态存档 我使用 g 版本 7 3 0 和 ld 版本 2 30 无论它是用什么 GCC 版本编译的 它都是古老的 头文件定义了方法 class fo
  • 为静态库编译 SWIG Python 包装器?

    这是一个菜鸟问题 我正在尝试学习如何使用 SWIG 为 C 库制作 python 接口 该库是专有的第三方库 它以头文件 foo h 和静态存档 libfoo a 的形式出现在我面前 为了简化问题 我编造了一个我认为具有相同病理学的例子 无
  • 符号 __module_registered 错误的重复定义

    我从 GHCi 收到一条关于 符号 module registered 的重复定义 的错误消息 如下所示 GHCi runtime linker fatal error I found a duplicate definition for
  • 静态链接库时出现 glew 链接器错误

    我正在尝试在 Visual Studio 2012 中构建一个 opengl 项目 我想静态包含 glew 库 因此我从源代码构建它并将生成的 glew32sd lib 复制到我的 lib 目录 我将此 lib 路径提供给 Visual S
  • 汇编语言中的全局_start是什么?

    这是我的汇编级代码 section text global start start mov eax 4 mov ebx 1 mov ecx mesg mov edx size int 0x80 exit mov eax 1 int 0x80
  • 我如何在 Visual Studio 2012 中同时构建项目(dll 和 lib)

    我设法在 dll 模式和库模式下设置构建项目 但不能同时设置 对于构建在 dll 中 项目 gt 属性 gt 配置类型 动态库 dll 项目 gt 属性 gt 目标扩展名 dll 对于内置库 项目 gt 属性 gt 配置类型 静态库 lib
  • 当库静态链接时静态变量会发生什么

    假设我有图书馆 A 实现单例模式 它的实现中有一个静态变量 A 库被编译为静态库 现在 假设我的项目中有 B 另一个静态链接的静态库 A C 另一个静态链接的静态库 A D 一个顶级程序链接 B and C 最后 我的单例真的是单例 并且我
  • 使用 g++ 从 cpp 文件和静态库创建共享库 [重复]

    这个问题在这里已经有答案了 就像标题所说 我想从三个 cpp 文件和一些静态库创建共享库 基本上我想这样做 g libProject so file1 cpp file2 cpp file3 cpp I usr local include
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012
  • 静态库中的单例类

    假设我在静态库中有一个单例类 S 它可以与其他动态库 D1 D2 D3 链接 因此 据我了解 类 S 在每个 D1 D2 和 D3 中都会有一个单独的实例 即使它不是单例 如全局 这也是正确的 有什么办法可以防止S类的多副本吗 我无法将单例
  • 如何将 C++ 代码“制作”为 xcode 的库

    为了澄清澄清 我知道如何使用 obj c 或 swift 在 Xcode 中创建库 我知道如何在项目中使用这些 我知道如何编译这些项目 以便一切正常 我不知道的是如何获取开源 C 源代码 呵呵 并将其构建 制作 编译到库中 只是为了澄清以下
  • Xcode 自定义构建配置导致静态库“找不到库/文件”

    我有一个工作区 其中有一个项目与另一个项目 也在工作区中 中的静态库链接 这是一个问题Kobold2D http www kobold2d com尽管我了解原因 但我仍无法解决 我想这是类似于这个问题 https stackoverflow

随机推荐

  • 撇号的正则表达式

    我正在寻找一个正则表达式来查找字符串中的撇号 该字符串也可以是一个句子 我尝试了一个简单的正则表达式 如 但它只检查字符串中的一个字符 如何检查整个字符串 例如 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