如何只加载程序需要的功能而不是加载整个libc?

时间:2018-07-10 08:34:44

标签: ubuntu linker

我正在学习Ubuntu上的动态链接器。我想导入所需的libc函数,但是它链接了while libc.so文件。我不知道该怎么做,所以我来这里寻找帮助。

1 个答案:

答案 0 :(得分:1)

如果您将程序链接到动态库(例如libc.so),则 动态库将在以下位置加载到程序的进程中 运行。您的程序本身-链接器的输出文件-不会 包含libc中的任何对象。它只会包含对 运行时加载程序,将libc.so加载到进程中并解析符号。

这就是动态链接的工作方式。您只想在其程序中包含 来自libc的对象 然后需要链接libc static 版本,即libc.a。那会 是不寻常的,并且是不必要的,除非您有特殊的理由 无法动态链接libc。静态链接不会使您的程序 较小。它将变得更大,因为libc中需要 的对象将被嵌入 在链接时进入。