【发布时间】:2020-02-25 07:17:51
【问题描述】:
假设我正在尝试创建二进制文件myprogram。 myprogram 包含一个文件foo.h,其中声明了一些函数;这些函数在libfoo.so 中定义。因此,在构建myprogram 时,我将libfoo.so 传递给链接器...不,不是名称“libfoo.so”而是实际的共享库文件。
我的问题是,为什么这是必要的?我的理解是只有在运行时才需要共享库,此时动态链接器会将其加载到内存中并在myprogram 中修复对它的所有引用。除了将其名称放入共享库列表之外,静态链接器对 libfoo.so 做了什么?
【问题讨论】: