【问题标题】:Why does my static build require shared libraries?为什么我的静态构建需要共享库?
【发布时间】:2010-11-08 17:05:33
【问题描述】:

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

我经常从我的链接器收到这些警告......(目前它正在发生在 openssh-5.2p1 中)

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

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

谢谢, 陈兹

【问题讨论】:

    标签: gcc gnu-toolchain


    【解决方案1】:

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

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

    如果您静态链接到 glibc,您的应用将不支持 /etc/nsswitch.conf 自定义,gethostbynamegetpwuid 等函数将仅使用默认查找方式。

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

    另见

    Statically linking considered harmful

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2012-05-17
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多