Questão Não é possível carregar libstdc ++. So.5 no Ubuntu Linux


Estou tentando executar um binário e diz ./xtensoftphone: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory. Esta biblioteca é de fato instalada sob /usr/lib. Existe algo que eu preciso fazer para obter o binário para ver a biblioteca? Eu pensei em tudo /usr/lib bibliotecas eram visíveis.


blaine :: ~/Downloads/xten-xlite » ldd xtensoftphone                                                                                                                    
linux-gate.so.1 =>  (0xf7783000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7749000)
libgthread-2.0.so.0 => /usr/lib32/libgthread-2.0.so.0 (0xf7743000)
libglade-2.0.so.0 => /usr/lib32/libglade-2.0.so.0 (0xf772a000)
libgtk-x11-2.0.so.0 => /usr/lib32/libgtk-x11-2.0.so.0 (0xf7355000)
libxml2.so.2 => /usr/lib32/libxml2.so.2 (0xf722b000)
libz.so.1 => /usr/lib32/libz.so.1 (0xf7216000)
libgdk-x11-2.0.so.0 => /usr/lib32/libgdk-x11-2.0.so.0 (0xf7180000)
libatk-1.0.so.0 => /usr/lib32/libatk-1.0.so.0 (0xf7163000)
libgdk_pixbuf-2.0.so.0 => /usr/lib32/libgdk_pixbuf-2.0.so.0 (0xf7149000)
libpangoxft-1.0.so.0 => /usr/lib32/libpangoxft-1.0.so.0 (0xf7141000)
libpangox-1.0.so.0 => /usr/lib32/libpangox-1.0.so.0 (0xf7134000)
libpango-1.0.so.0 => /usr/lib32/libpango-1.0.so.0 (0xf70f1000)
libgobject-2.0.so.0 => /usr/lib32/libgobject-2.0.so.0 (0xf70b1000)
libgmodule-2.0.so.0 => /usr/lib32/libgmodule-2.0.so.0 (0xf70ac000)
libdl.so.2 => /lib32/libdl.so.2 (0xf70a8000)
libglib-2.0.so.0 => /lib32/libglib-2.0.so.0 (0xf6fde000)
libm.so.6 => /lib32/libm.so.6 (0xf6fb8000)
libstdc++.so.5 => not found
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf6f98000)
libc.so.6 => /lib32/libc.so.6 (0xf6e3e000)
libX11.so.6 => /usr/lib32/libX11.so.6 (0xf6d21000)
/lib/ld-linux.so.2 (0xf7784000)
librt.so.1 => /lib32/librt.so.1 (0xf6d18000)
libpcre.so.3 => /lib32/libpcre.so.3 (0xf6ce7000)
libpangoft2-1.0.so.0 => /usr/lib32/libpangoft2-1.0.so.0 (0xf6cbf000)
libpangocairo-1.0.so.0 => /usr/lib32/libpangocairo-1.0.so.0 (0xf6cb3000)
libgio-2.0.so.0 => /usr/lib32/libgio-2.0.so.0 (0xf6c15000)
libcairo.so.2 => /usr/lib32/libcairo.so.2 (0xf6b9b000)
libfreetype.so.6 => /usr/lib32/libfreetype.so.6 (0xf6b25000)
libfontconfig.so.1 => /usr/lib32/libfontconfig.so.1 (0xf6af4000)
libXext.so.6 => /usr/lib32/libXext.so.6 (0xf6ae4000)
libXrender.so.1 => /usr/lib32/libXrender.so.1 (0xf6ada000)
libXinerama.so.1 => /usr/lib32/libXinerama.so.1 (0xf6ad6000)
libXi.so.6 => /usr/lib32/libXi.so.6 (0xf6ac8000)
libXrandr.so.2 => /usr/lib32/libXrandr.so.2 (0xf6abf000)
libXcursor.so.1 => /usr/lib32/libXcursor.so.1 (0xf6ab5000)
libXcomposite.so.1 => /usr/lib32/libXcomposite.so.1 (0xf6ab1000)
libXdamage.so.1 => /usr/lib32/libXdamage.so.1 (0xf6aad000)
libXfixes.so.3 => /usr/lib32/libXfixes.so.3 (0xf6aa7000)
libXft.so.2 => /usr/lib32/libXft.so.2 (0xf6a92000)
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf6a78000)
libresolv.so.2 => /lib32/libresolv.so.2 (0xf6a64000)
libselinux.so.1 => /lib32/libselinux.so.1 (0xf6a49000)
libpixman-1.so.0 => /usr/lib32/libpixman-1.so.0 (0xf69ee000)
libdirectfb-1.2.so.0 => /usr/lib32/libdirectfb-1.2.so.0 (0xf6977000)
libfusion-1.2.so.0 => /usr/lib32/libfusion-1.2.so.0 (0xf696d000)
libdirect-1.2.so.0 => /usr/lib32/libdirect-1.2.so.0 (0xf6957000)
libpng12.so.0 => /lib32/libpng12.so.0 (0xf6932000)
libxcb-render-util.so.0 => /usr/lib32/libxcb-render-util.so.0 (0xf692c000)
libxcb-render.so.0 => /usr/lib32/libxcb-render.so.0 (0xf6924000)
libexpat.so.1 => /lib32/libexpat.so.1 (0xf68fd000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf68f9000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf68f3000)

blaine :: ~/Downloads/xten-xlite » cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

1


origem


pelo visto xtensoftphone é um executável de 32 bits; você tem um 32-bit libstdc++.so.5ou apenas um de 64 bits? O que file -L /usr/lib*/libstdc++.so.5 exposição? - Gilles


Respostas:


Você realmente tem /usr/lib/libstdc++.so.5, além de /usr/lib/libstdc++.so.6? Os dois não são compatíveis (no sentido de que um programa que requer um não funcionará com o outro, é claro que você pode instalar ambos). Você precisará instalar o libstd++5 pacote.

Ubuntu 10.04 não tem mais libstdc++5, mas se você precisar, você pode pegar o pacote do repositório backports. Foi reintroduzido em versões subseqüentes.


1



Eu tenho 5 e 6 instalados. O programa não está exigindo ambos, apenas 5, como mostrado pela saída do ldd acima. - Blaine Lafreniere
Eu instalei 5 de um .deb - Blaine Lafreniere
@Blaine: você tem um sistema de 32 ou 64 bits? Se você instalou uma biblioteca de 64 bits de um .deb, ela não funcionará com o executável de 32 bits. - Gilles
Apenas corra sudo apt-get install libstdc++5 - Flying Fisher


Você precisa correr ldconfig após cada alteração nas bibliotecas. Em caso de dúvida, basta executá-lo, não vai doer se executado com muita freqüência.

Se isso não resolver, por favor poste a saída de ldd xtensoftphone e o conteúdo de /etc/ld.so.conf (mais quaisquer arquivos sob /etc/ld.so.conf.d), então vamos ver.


0



Veja os detalhes adicionados acima - Blaine Lafreniere
Para uma biblioteca em /usr/lib, o gerenciador de pacotes deve ter executado ldconfig. Para qualquer pessoa com um problema semelhante: se você instalar uma biblioteca manualmente, coloque-a /usr/local/lib, e corra ldconfig depois. - Gilles


Tente adicionar o local da biblioteca ao LD_LIBRARY_PATH


-1



-1 Isso é mais provável para complicar ainda mais as coisas. Bibliotecas sob / usr / lib devem ser selecionadas sem LD_LIBRARY_PATH. - sleske