为什么我的静态构建需要共享库?
每隔一段时间我就会从链接器中收到这些警告......(目前正在使用openssh-5.2p1)
警告类似于: “在静态链接的应用程序中使用'function'需要在运行时使用glibc版本中的共享库...”
当我谷歌时,我只看到修复,而不是原因。
谢谢, Chenz
答案 0 :(得分:5)
它本身不需要共享库,它只是警告你,如果静态链接到glibc,某些东西可能无法正常工作。
其中一些是nsswitch,参见例如/etc/nsswitch.conf
。在系统中,可以通过插件配置和更改查找用户/组/主机名和其他内容的不同方式 - 例如samba附带一个模块,用于透明地管理在Windows域/活动目录上配置的用户。
如果您静态链接到glibc,/etc/nsswitch.conf
,gethostbyname
等功能,您的应用将不会尊重getpwuid
自定义,而其他人只会使用查找内容的默认方式。
同样适用于您的应用程序可能使用的其他库,无论出于何种原因dlopen()s
本身都可以挂钩到glibc或类似的。
另见