5

为什么我的静态构建需要共享库?

每隔一段时间我就会从我的链接器收到这些警告......(目前它正在发生在 openssh-5.2p1 中)

警告类似于:“在静态链接的应用程序中使用 'function' 需要在运行时使用 glibc 版本中用于...的共享库”

当我谷歌时,我只看到修复,而不是原因。

谢谢,陈兹

4

1 回答 1

5

它本身不需要共享库,它只是警告您,如果您静态链接到 glibc,某些事情可能无法正常工作。

其中一些是 nsswitch,参见例如/etc/nsswitch.conf。在系统上查找用户/组/主机名的不同方式和其他内容可以通过插件进行配置和更改 - 例如,samba 带有一个用于管理在 Windows 域上配置的用户的模块/活动目录透明。

如果您静态链接到 glibc,您的应用程序将不/etc/nsswitch.conf支持自定义,诸如 之类的函数gethostbynamegetpwuid其他函数将仅使用默认方式查找事物。

同样适用于其他库,例如您的应用程序可能出于任何原因使用dlopen()s它来挂钩 glibc 或类似的。

也可以看看

静态链接被认为是有害的

于 2009-07-07T15:21:13.447 回答