【发布时间】:2010-11-08 17:05:33
【问题描述】:
为什么我的静态构建需要共享库?
我经常从我的链接器收到这些警告......(目前它正在发生在 openssh-5.2p1 中)
警告类似于: “在静态链接的应用程序中使用 'function' 需要在运行时使用 glibc 版本中用于...的共享库”
当我用谷歌搜索时,我只看到修复,而不是原因。
谢谢, 陈兹
【问题讨论】:
标签: gcc gnu-toolchain
为什么我的静态构建需要共享库?
我经常从我的链接器收到这些警告......(目前它正在发生在 openssh-5.2p1 中)
警告类似于: “在静态链接的应用程序中使用 'function' 需要在运行时使用 glibc 版本中用于...的共享库”
当我用谷歌搜索时,我只看到修复,而不是原因。
谢谢, 陈兹
【问题讨论】:
标签: gcc gnu-toolchain
它本身不需要共享库,它只是警告您,如果您静态链接到 glibc,某些事情可能无法正常工作。
其中一些是 nsswitch,参见例如/etc/nsswitch.conf .在系统上,可以通过插件配置和更改查找用户/组/主机名和其他内容的不同方式 - 例如。 samba 带有一个模块,用于透明地管理在 Windows 域/活动目录上配置的用户。
如果您静态链接到 glibc,您的应用将不支持 /etc/nsswitch.conf 自定义,gethostbyname、getpwuid 等函数将仅使用默认查找方式。
同样适用于例如无论出于何种原因,您的应用程序可能会使用其他库 dlopen()s 本身来挂钩 glibc 或类似的。
另见
【讨论】: