【发布时间】:2010-12-23 07:16:51
【问题描述】:
我想创建一个使用来自 3rd 方静态库的函数的共享库。例如,foo 和 bar 来自 libfoobar.a。我知道我的主应用程序也在使用 foo 并将导出该符号。所以我只想链接bar 以节省代码大小并使'foo'未解决(因为它将由主应用程序提供)。如果我包含libfoobar.a,链接器ld 将在我的共享库中包含这两个函数。如果我不包含libfoobar.a,我的库将无法访问函数bar,因为应用程序本身没有链接到bar。问题:
- 有没有办法告诉 ld 在构建共享库时只解析某些符号?
- 将
libfoobar.a变成共享库? - 从
libfoobar.a中提取包含函数bar的文件并在链接器行上指定它? - 别担心,运行时加载器会使用您应用程序中的
bar,所以共享库中bar的副本不会被加载?
【问题讨论】:
标签: linux shared-libraries ld static-linking