Por isso, I'estou agora desesperado em encontrar uma solução para isto. I'm compilando uma biblioteca partilhada .so em Ubuntu 32 bit (Tentei fazê-lo em Debian e Ubuntu 64 bit, mas nenhuma funcionou também)
Continuo a receber: /usr/libstdc+++.so.6: versão ``GLIBCXX_3.4.15' não encontrada
cada vez que tento carregar o meu plugin.
Aqui's como eu's estou a receber este erro:
Aqui estão algumas ligações que encontrei e tentei, mas nenhuma funcionou para mim:
(A minha velha pergunta: De alguma forma, arranjei-a alguns dias após a publicação desta pergunta, mas não consigo'não me lembro exactamente como o fiz)
Outro utilizador com o mesmo problema1
E outro[4].
Vejo que algumas pessoas fixaram-no movendo a libstdc++(penso) para algum directório e depois apontando ou ligando idk o quê a esse directório, mas isso apenas me intrigou.
Alguém conhece uma solução?
(Edição:)
strings /usr/lib/libstdc++.so.6 | grep GLIBC
em terminal dá-me: strings '/usr/lib/libstdc+++.so.6': Não existe tal ficheiro
. Poderá ser esse o problema? E se sim, como é que instalo esta biblioteca?(Edit2:) Mais alguém sabe de uma solução?
(Edit3) Ainda a precisar de uma solução. existe alguma forma de ver em que distro uma biblioteca partilhada foi compilada? Sei que uma vez compilei esta mesma biblioteca há algum tempo, mas não consigo'não me lembro!!
(Edit4) ldd my_lib_.so
me dá:
linux-gate.so.1 => (0xb77d7000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76c1000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb76a4000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74fa000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb74ce000)
/lib/ld-linux.so.2 (0xb77d8000)
O 'ldd program_im_loading_so_into' dá-me:
linux-gate.so.1 => (0xb77d8000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb77c0000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb77a5000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76bb000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb768f000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7672000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74c9000)
/lib/ld-linux.so.2 (0xb77d9000)
running strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep GLIBCXX
me dá:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH
e finalmente aqui's a minha versão gcc:
`gcc version 4.6.4 (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04)`
Em cima, menciona ter compilado os seus passos para se reproduzir, mas depois, em baixo, fez um ditado de edição,
"existe uma forma de ver em que distro uma biblioteca partilhada foi compilada em?"
Quer tenha ou não compilado isto na mesma distro, e mesmo uma versão diferente da mesma distro é um detalhe importante, especialmente para aplicações c++.
A ligação a bibliotecas c++, incluindo a libstdc+++ pode ter resultados mistos, tanto quanto posso dizer. Aqui está uma questão relacionada sobre recompilação com diferentes versões do c+++.
https://stackoverflow.com/questions/9408656/do-we-need-to-recompile-libraries-with-c11
Basicamente, se compilou contra c++ numa distro diferente (e possivelmente numa versão gcc diferente), isto pode estar a causar o seu problema.
Penso que tem duas opções: