Sono su Ubuntu 12.04 a 64 bit e sto cercando di far funzionare un gioco (GTA SA) in Wine, ma continua a bloccarsi. Dopo aver letto i log degli errori, sembra che avessi bisogno di alcune versioni a 32 bit di gstreamer, probabilmente per riprodurre il video introduttivo. Ho già ia32-libs
, poiché ho letto da qualche parte, ne avrò bisogno per eseguire software a 32 bit. Ho provato per la prima volta:
sudo apt-get install gstreamer0.10-ffmpeg:i386
Che restituisce:
gstreamer0.10-ffmpeg:i386 : Depends: libavcodec53:i386 (>= 4:0.7.3-1) but it is not going to be installed or
libavcodec-extra-53:i386 (>= 4:0.7.3-1) but it is not going to be installed
E dipende anche da libavformat, libpostproc e libswscale con circa lo stesso errore. Così ho continuato a cercare e ho trovato un bel tool, getlibs, che permette di installare librerie a 32 bit. Penso che li metta semplicemente in /usr/lib32
directory, che probabilmente non è il modo migliore per farlo, ma l'ho provato comunque.
Quindi ho installato le librerie a 32 bit con getlibs di cui si lamentava Wine. Ora ho ricevuto diversi errori, in pratica la libreria a 32 bit fa riferimento ad altre librerie che ora non riesce a trovare. Ad esempio uno degli errori dice:
Failed to load plugin '/usr/lib32/gstreamer-0.10/libgstffmpeg.so': libavformat.so.53: cannot open shared object file: No such file or directory
Quindi il mio pensiero iniziale era corretto, poiché ora utilizza la versione a 32 bit. Ora stavo cercando di capirlo con ldd per vedere dove la libreria fa riferimento ad altre librerie:
# This one is fine
ldd /usr/lib/gstreamer-0.10/libgstffmpeg.so | grep avformat
libavformat.so.53 => /usr/lib/x86_64-linux-gnu/libavformat.so.53 (0x00007f8314181000)
# This one isn't
ldd /usr/lib32/gstreamer-0.10/libgstffmpeg.so | grep avformat
libavformat.so.53 => not found
Quindi, in effetti, libgstffmpeg.so non riesce a trovare il corretto libavformat.so. Ho provato a installare di nuovo la versione a 32 bit di libavformat con getlibs, che l'ha inserita in /usr/lib32/i386-linux-gnu/libavformat.so
. Ma ldd mi dice ancora che non riesce a trovare libavformat. Quindi ho provato a creare un collegamento simbolico nella stessa directory, ma l'ho chiamato libavformat.so.53
e ho anche creato un collegamento simbolico a `/usr/lib/i386-linux-gnu/libavformat.so.53', ma entrambi mi danno lo stesso errore.
Ora sono sicuro che questo non è davvero il modo corretto di procedere, ma non conoscevo il modo giusto per farlo. Quindi qual è il modo corretto per farlo, o gstreamer0.10-ffmpeg semplicemente non ha il supporto a 32 bit o multilib? E come posso scoprire qual è la directory, dove libgstffmpeg (o qualsiasi libreria suppongo) controlla le librerie a 32 bit a cui fa riferimento?
Correlati:Linux – Come inserire nella blacklist un settore RAM danneggiato corretto secondo l'indicazione di errore MemTest86+?Risposta accettata:
Prova:
ldconfig -p | grep lib32
Se non vedi alcun output, è perché la cache del linker (leggi il primo paragrafo di man ldconfig
e sul -p
switch) non fa riferimento a /usr/lib32. Ho controllato un sistema Ubuntu 12.04 e non è presente per impostazione predefinita. Puoi aggiungerlo a:/etc/ld.so.conf.d/libc.conf
che può contenere solo /usr/local/lib
. Esegui solo ldconfig
, quindi il comando -p dall'alto. Dovresti vedere la roba in /usr/lib32; ora prova di nuovo il tuo ldd sulla lib gstreamer a 32 bit.