gpt4 book ai didi

c - gcc 仅链接 'required functions'

转载 作者:行者123 更新时间:2023-12-05 01:28:56 28 4
gpt4 key购买 nike

编译 C 程序时,gcc 默认链接标准 C 库。是否可以仅链接选定的函数,例如 printf 而不是完整的 C 标准库,以尝试将可执行文件的大小降至最低?

最佳答案

对于大多数传统链接器,静态库链接是在目标文件的基础上完成的。 gcc 通常会使用您正在使用的系统上的系统链接器。

传统上,静态库只是一个存档文件,由构成库的目标文件组成。当您将静态库链接到您的程序时,链接器将从库中提取任何有助于解析程序中任何未解析符号的目标文件,包括由库中的目标文件引入的有助于解析以前未解析符号的符号。

理论上,如果标准库实现由每个函数一个目标文件组成,并且标准库函数之间没有依赖关系,那么您将只能获得显式调用的函数。在实践中,您可能会获得比您明确调用的函数更多的功能。

动态链接完全不同。在这种情况下,您的程序将仅包含对标准库共享对象的引用,该对象将在运行时完整地加载到您的进程内存空间中。

关于c - gcc 仅链接 'required functions',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394886/

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