为什么我的静态构建需要共享库?
我经常从链接器处收到这些警告...(目前 openssh-5.2p1 上出现这种情况)
警告看起来类似于: “在静态链接的应用程序中使用‘函数’需要在运行时使用 glibc 版本中的共享库来...”
当我用谷歌搜索时,我只看到修复,而不是原因。
谢谢, 陈兹
最佳答案
它本身不需要共享库,它只是警告您,如果您静态链接到 glibc,某些功能可能无法正常工作。
其中一些是 nsswitch,请参见例如/etc/nsswitch.conf
。在系统上,可以通过插件配置和更改查找用户/组/主机名和其他内容的不同方式 - 例如samba 附带一个模块,用于透明地管理 Windows 域/事件目录上配置的用户。
如果您静态链接到 glibc、gethostbyname
、getpwuid
等函数,您的应用将不支持 /etc/nsswitch.conf
自定义其他人只会使用默认的查找方式。
同样适用于例如您的应用程序可能出于某种原因使用 dlopen()s 本身来 Hook glibc 或类似的其他库。
另请参阅
关于gcc - 为什么我的静态构建需要共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1092456/