Errore durante il caricamento di libGL.so.1


48

Durante il tentativo di eseguire vari software (in particolare Steam e Yenka), ho riscontrato un errore simile al seguente: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

Sto eseguendo un sistema a 64 bit, con una scheda NVidia Optimus (doppio avvio per alcuni software solo Windows che richiede una scheda grafica dedicata). Ho installato bumblebee e sto usando il driver nvidia-current, piuttosto che uno scaricato da NVidia, come raccomandato.

La libreria (libGL.so.1) non è presente nella directory principale di /usr/lib, tuttavia è presente in /usr/lib32/nvidia-current, come collegamento software a /usr/lib32/nvidia-current/libGL.so.304.64.

Una sezione dell'output di ldconfig -p:

libGL.so.1 (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so

Ovviamente viene caricata una libreria con quel nome, ma si trovano in /usr/lib/x86_64-linux-gnu, tuttavia il software installato non sembra in grado di "vederlo". Per Steam, eseguirlo con optirun fa funzionare, ma questo non è il caso di Yenka. Suppongo che optirun induca a utilizzare la libreria memorizzata /usr/lib32/nvidia-current, il che consente l'esecuzione di Steam, quindi non riesco a capire perché Yenka non funzionerà.

Qualcuno può spiegare perché il software non può vedere la normale libreria mesa e perché Yenka si rifiuta di funzionare con la libreria nvidia-current?

Risposte:


40

Con i driver nvidia installati skype è alla ricerca di una lib i386 fornita dal pacchetto nvidia. Poiché ciò non esiste, è possibile utilizzare i386 libGL.so.1 fornito da mesa.

Testato su (ubuntu-gnome raring, usando nvidia-325) e (ubuntu-gnome saucy, usando nvidia-319) siamo riusciti a risolvere questo problema nel modo seguente:

update-alternatives --display i386-linux-gnu_gl_conf

Questo ti mostrerà quali sono le opzioni disponibili.

i386-linux-gnu_gl_conf - auto mode
  link currently points to /usr/lib/nvidia-325/alt_ld.so.conf
/usr/lib/i386-linux-gnu/mesa/ld.so.conf - priority 500
  slave i386-linux-gnu_xorg_extra_modules: /usr/lib/i386-linux-gnu/xorg/x11-extra-modules
/usr/lib/nvidia-325/alt_ld.so.conf - priority 8602
Current 'best' version is '/usr/lib/nvidia-325/alt_ld.so.conf'

quindi, procedi come segue:

sudo update-alternatives --config i386-linux-gnu_gl_conf

quindi selezionare l'alternativa migliore (ho selezionato i386-linux-gnu / mesa / ld.so.conf): nell'output seguente ci sono due scelte per l'alternativa i386-linux-gnu_gl_conf (che fornisce /etc/ld.so.conf. d / i386-linux-gnu_GL.conf).

  Selection    Path                                     Priority   Status
------------------------------------------------------------
* 0            /usr/lib/nvidia-325/alt_ld.so.conf        8602      auto mode
  1            /usr/lib/i386-linux-gnu/mesa/ld.so.conf   500       manual mode
  2            /usr/lib/nvidia-325/alt_ld.so.conf        8602      manual mode

Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/i386-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode

Dopo averlo completato, prova a eseguire:

sudo ldconfig

e poi hai finito.


2
Ho avuto lo stesso identico e questo ha funzionato perfettamente, grazie mille (Ubuntu 13.10)
Xtremesupremacy3

fastidioso - Ho solo l'opzione ld.so.conf, quindi ottieni "C'è solo una alternativa nel gruppo di collegamenti i386-linux-gnu_gl_conf (che fornisce /etc/ld.so.conf.d/i386-linux-gnu_GL.conf) : /usr/lib/i386-linux-gnu/mesa/ld.so.conf. Nulla da configurare. "
dez93_2000,

quali pacchetti nvidia hai installato? Hai installato libgl1-mesa-glx? Su fidato libgl1-mesa-glx: i386 fornisce le librerie /usr/lib/i386-linux-gnu/mesa/ld.so.conf (e le librerie libGL.so.1 * associate.
eurythmia

Bella risposta. Stavo ricevendo errori durante l'esecuzione di un programma Qt dopo essere passato al driver Nvidia - QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linkede [xcb] This is most likely caused by a broken X extension library- e dopo averlo chiarito.
Matteo Leggi il

Grazie. Funziona anche il 14.04. Questo non influirà su nessun altro programma. Sara? Come riparare una cosa ne rompe altre 10.
Sudhir Khanger,

51

Sto riscontrando lo stesso problema dopo l'installazione di skype ... quindi puoi fare entrambe le cose per correggere questo errore.

Il primo viene eseguito l'applicazione seguendo il comando ... ad esempio, sto eseguendo skype ..

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype

FONTE

2 ° quello che ho fatto

sudo nano /etc/ld.so.conf.d/skype.conf

e aggiungi la seguente riga

/usr/lib/i386-linux-gnu/mesa/

salva ed esci

e infine corri

sudo ldconfig -v

spero che questo risolva l' errore libGL.so.1 come ha fatto il mio

Puoi anche trovare libGL.so.1

   find / -name libGL.so.1

Sono riuscito a risolverlo alla fine. Sfortunatamente, non ricordo come, ma ricordo che consisteva nel creare collegamenti simbolici casuali alla libreria, eseguire molto ldconfig e quindi rimuovere i suddetti collegamenti simbolici. Ora funziona tutto bene.
p0llard,

Questo ha funzionato bene! Finalmente! Inoltre, ricordo di aver fatto ciò che @ jdp407 ha detto prima di questi passaggi.
Gundars Mēness,

1
Sebbene questa soluzione sia valida, gestisce sempre e solo le applicazioni una alla volta. Se hai altre applicazioni a 32 bit che richiedono un libGL.so, dovrai ripetere il processo per quelle applicazioni. È meglio impostare questa preferenza a livello globale usando update-alternative
eurythmia,

@eurythmia Puoi anche copiarlo in / lib ed eseguire sudo ldconfig e sarà un accesso globale
Qasim

purtroppo non funziona per me su xubuntu, "ERRORE: ld.so: oggetto '/usr/lib/i386-linux-gnu/mesa/libGL.so.1' da LD_PRELOAD non può essere precaricato (impossibile aprire il file oggetto condiviso) : ignorato "; skype.conf è in etc / dbus-1 / system.d non /ld.so.conf.d/ e sembra essere un file diverso ...
dez93_2000,

12

Le correzioni qui funzioneranno, ma ce n'è una più semplice.

Se skypenon funziona ma optirun skypefunziona, puoi risolverlo con:

sudo apt-get install bumblebee-nvidia --reinstall

(Le persone che usano Bumblebee con le schede AMD potrebbero dover eseguire una reinstallazione equivalente).

Bumblebee causa e risolve questo problema, ma la correzione che applica si verifica al momento dell'installazione, quando rende le librerie libGL disponibili sia sulla scheda integrata che sulla scheda più potente. Questo non accadrà se quelle librerie non erano già state installate durante l'installazione di Bumblebee, quindi necessitava di una reinstallazione. Non dovrebbe influire nemmeno sulla configurazione del tuo calabrone, anche se ovviamente vale la pena controllarlo dopo averlo fatto.


3
funziona bene per me ... grazie. Ubuntu gnome 14.04
aditia,

1
Sicuramente la soluzione più semplice! Sapevo che aveva qualcosa a che fare con l'ordine di installazione poiché ho reinstallato il mio sistema due volte di recente (Ubuntu 14.04 64 bit + scheda grafica Nvidia Optimus). La prima volta che ho installato Skype e poi Bumblebee, nel qual caso non ho avuto problemi. La seconda volta che ho installato Bumblebee e poi Skype e questo problema si è presentato. La semplice reinstallazione di bumblebee-nvidia come mostrato in questa risposta ha risolto il problema!
Sicco,

Sono propenso a concordare sul fatto che questa sembra una soluzione migliore della mia.
Euritmia,

2

Modifica la voce del desktop:

sudo nano /usr/share/applications/skype.desktop

Cambia Exec in:

Exec=env PULSE_LATENCY_MSEC=60 LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype %U

Questo funziona:

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1

prima di eseguire skype quando lo si avvia con la voce launcher / desktop.

Dovrebbe funzionare bene dopo quello finché lo avvii usando il programma di avvio dell'applicazione.


Il file libGL.so.1potrebbe non essere in quel percorso (non era per me, su Debian 8 / Jessie). Per trovare il percorso che si deve mettere in LD_PRELOADsemplicemente trovare il file i386 sul vostro sistema: sudo find / -name libGL.so.1 2>/dev/null. L'ho trovato /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1e ha funzionato bene usando quello come LD_PRELOAD.
f.ardelian,

1

Non sono sicuro se questo aiuterà a chiarire o no, ma ho avuto lo stesso problema con skype e libGL.so.1. Anche in esecuzione 13.04 con una carta optimus e bumblebee.

Ho riscontrato il problema con skype senza optirun, ma ha funzionato bene. Ho appena cambiato il file desktop per eseguirlo con optirun ogni volta e voilà. fisso!


Non proprio risolto, dal momento che stai usando la carta più avida di energia per skype. Infatti, se stai usando il bridge VirtualGL piuttosto che primus, essenzialmente brucerai tutta la potenza come se non avessi installato bumblebee e avessi sempre usato la scheda nvidia.
Jon Hanna,

1

Ho avuto un problema simile e l'ho risolto installando librerie a 32 bit sul mio sistema a 64 bit: apt-get install ia32-libs


0

Scarica l'ultima versione dalla pagina ufficiale di Steam, quindi lascia che scarichi ciò di cui ha bisogno dal terminale (se necessario). di aggiungere bumblebee ppa se non l'hai già fatto.

sudo add-apt-repository ppa:bumblebee/stable

aggiornalo con questo comando:

sudo apt-get update

e installa virtualgl(che ha risolto l' libgl.so.1errore per me su Steam)

sudo apt-get install virtualgl

0

Provare:

sudo apt-get install libgl1-mesa-glx-lts-utopic:i386
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.