静态链接的二进制文件需要共享库吗?

我在这里有一个明显静态链接的二进制文件:

$ file wkhtmltopdf-amd64 wkhtmltopdf-amd64: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped $ ldd wkhtmltopdf-amd64 not a dynamic executable $ readelf -d wkhtmltopdf-amd64 There is no dynamic section in this file. 

但是当我尝试执行它,它抱怨共享将会丢失:

 $ ./wkhtmltopdf-amd64 ./wkhtmltopdf-amd64: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory 

我的问题:

  • 我认为静态链接的二进制文件不依赖于共享库。 有人能纠正我明显错误的假设吗?
  • 我怎样才能find这个二进制文件依赖的所有库?

PS:有问题的二进制文件来自http://code.google.com/p/wkhtmltopdf/downloads/list

是的,通过embedded式库间接。

下面的信息表明,QT库是静态embedded到二进制文件中的。 使用strace运行二进制文件显示,它确实试图加载Xorg库,因为它们不是在QT库中静态链接的。 换句话说,一些静态链接库(很可能是QT)具有自己的依赖关系。 至less这是我的想法。

wkhhtmltopdf维基 – 编译:

在编译wkhtmltopdf之前,你需要安装QT,再次有两个select:你可以从你的发行版本安装QT,这将会很快,但是你的wkhtmltopdf版本将不具备静态编译的所有function,或者你可以编译QT你的自我,这需要很长的时间,但你会得到所有的function。

wkhtmltopdf wiki – 静态(faq):

  • 我正在使用静态二进制文件,但字体错误,正方形或全黑?
    这很可能是因为你没有安装X11或没有正确的X11字体

QtGui取决于Xorg&Co:

 #qlist qtgui | grep lib。* \。so |  awk -F /'{print $ NF}'|列
 libqtiff.so libQtScriptTools.so.4
 libqjpeg.so libQtDesignerComponents.so.4.8
 libqico.so libQtGui.so
 libqgif.so libQtScriptTools.so
 libqimsw-multi.so libQtGui.so.4
 libqtaccessiblewidgets.so libQtDesigner.so
 libQtDesigner.so.4.8.4 libQtDesignerComponents.so.4
 libQtGui.so.4.8.4 libQtGui.so.4.8
 libQtDesigner.so.4 libQtDesigner.so.4.8
 libQtScriptTools.so.4.8.4 libQtScriptTools.so.4.8
 libQtDesignerComponents.so.4.8.4 libQtDesignerComponents.so

        (>>>依赖)

 #qlist qtgui | grep lib。* \。so | xargs -L1 ldd |  awk'{print $ 1}'| sorting-u |列
 libbz2.so.1 libpthread.so.0 libxcb.so.1
 libc.so.6 libQtCore.so.4 libXcursor.so.1
 libdl.so.2 libQtDesigner.so.4 libXdmcp.so.6
 libexpat.so.1 libQtGui.so.4 libXext.so.6
 libfontconfig.so.1 libQtScript.so.4 libXfixes.so.3
 libfreetype.so.6 libQtXml.so.4 libXinerama.so.1
 libgcc_s.so.1 librt.so.1 libXi.so.6
 libglib-2.0.so.0 libSM.so.6 libXrandr.so.2
 libICE.so.6 libstdc ++。so.6 libXrender.so.1
 libjpeg.so.8 libtiff.so.3 libz.so.1
 /lib/ld-linux.so.2 libuuid.so.1 linux-gate.so.1
 libm.so.6 libX11.so.6
 libpng15.so.15 libXau.so.6

另外,我从我的发行版(dynamic)编译了程序, openStaticopenDynamic之间的区别是:

 # function openStatic { strace ./wkhtmltoimage/static/wkhtmltoimage-i386 \ |& grep 'open.*3' |sort | grep -o '/[^"]*' ;} # openStatic /etc/ld.so.cache /usr/lib/libexpat.so.1 /lib/ld-linux.so.2 /usr/lib/libfontconfig.so.1 /lib/libbz2.so.1 /usr/lib/libfreetype.so.6 /lib/libc.so.6 /usr/lib/libX11.so.6 /lib/libdl.so.2 /usr/lib/libXau.so.6 /lib/libgcc_s.so.1 /usr/lib/libxcb.so.1 /lib/libm.so.6 /usr/lib/libXdmcp.so.6 /lib/libpthread.so.0 /usr/lib/libXext.so.6 /lib/librt.so.1 /usr/lib/libXrender.so.1 /lib/libz.so.1 /usr/lib/gcc/i686-pc-linux-gnu/4.5.3/libstdc++.so.6 
 ------静态embedded库------ ---dynamic链接依赖关系---
 1 l / ld-linux.so.2 1 ul / libk5crypto.so.3 2 /etc/ld.so.cache
 1 l / libcom_err.so.2 1 ul / libkrb5.so.3 2 /lib/libbz2.so.1
 1 l / libkeyutils.so.1 1 ul / libkrb5support.so.0 2 /lib/libc.so.6
 1 l / libresolv.so.2 1 ul / liborc-0.4.so.0 2 /lib/libdl.so.2
 1 l / libuuid.so.1 1 ul / libpng15.so.15 2 /lib/libgcc_s.so.1
 1 ul / gconv / gconv-modules.cache 1 ul / libSM.so.6 2 /lib/libm.so.6
 1 ul / gconv / UTF-16.so 1 ul / libsqlite3.so.0 2 /lib/libpthread.so.0
 1 ul / libcrypto.so.1.0.0 1 ul / libssl.so.1.0.0 2 /lib/librt.so.1
 1 ul / libffi.so.5 1 ul / libwkhtmltox.so.0 2 /lib/libz.so.1
 1 ul / libglib-2.0.so.0 1 ul / libXcursor.so.1 2 ul / gcc /.../ libstdc ++。so.6
 1 ul / libgmodule-2.0.so.0 1 ul / libXfixes.so.3 2 ul / libexpat.so.1
 1 ul / libgobject-2.0.so.0 1 ul / libXinerama.so.1 2 ul / libfontconfig.so.1
 1 ul / libgstapp-0.10.so.0 1 ul / libXi.so.6 2 ul / libfreetype.so.6
 1 ul / libgstbase-0.10.so.0 1 ul / libxml2.so.2 2 ul / libX11.so.6
 1 ul / libgstinterfaces-0.10.so.0 1 ul / libXrandr.so.2 2 ul / libXau.so.6
 1 ul / libgstpbutils-0.10.so.0 1 ul / qt4 / libQtCore.so.4 2 ul / libxcb.so.1
 1 ul / libgstreamer-0.10.so.0 1 ul / qt4 / libQtGui.so.4 2 ul / libXdmcp.so.6
 1 ul / libgstvideo-0.10.so.0 1 ul / qt4 / libQtNetwork.so.4 2 ul / libXext.so.6
 1 ul / libgthread-2.0.so.0 1 ul / qt4 / libQtSvg.so.4 2 ul / libXrender.so.1
 1 ul / libICE.so.6 1 ul / qt4 / libQtWebKit.so.4

更多信息:
静态链接
你的问题在SO (重复,wink-wink)