GNU/Linux >> Linux Esercitazione >  >> Linux

/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versione CXXABI_1.3.8' non trovata

Aggiungi il percorso della libreria a LD_LIBRARY_PATH variabile d'ambiente

TL;DR

GCC richiede che tu gli dica dove si trova la tua libreria manualmente quando non riesce a trovare la versione giusta, cosa che può essere fatta in diversi modi. Uno è aggiungerlo al LD_LIBRARY_PATH .

export LD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PATH"

Per alcuni, il percorso della libreria sarà /usr/local/lib64/ . Altri hanno segnalato il percorso della libreria /usr/lib/x86_64-linux-gnu/ lavorando invece per loro.

Perché dobbiamo aggiungere la libreria a LD_LIBRARY_PATH ?

Quando compili e installi GCC, mette le librerie in una di queste directory, ma questo è tutto ciò che fa. Secondo le FAQ per libstdc++ , l'errore che abbiamo ottenuto significa che il linker dinamico ha trovato la versione errata di libstdc++ biblioteca condivisa. Poiché il linker non riesce a trovare la versione corretta, dobbiamo dirgli dove trovare il libstdc++ libreria.

Il modo più semplice per risolvere questo problema è utilizzare la variabile d'ambiente LD_LIBRARY_PATH, che è un elenco di directory separate da due punti in cui il linker cercherà le librerie condivise.

Esistono anche altri modi per risolvere questo problema. Puoi trovare questa e le altre soluzioni menzionate brevemente quando installi gcc se leggi l'output di make:

Le librerie sono state installate in:

/usr/local/lib/../lib32

Se ti capita mai di voler collegare le librerie installate in una data directory, LIBDIR, devi usare libtool e specificare il percorso completo della libreria, oppure usare il flag `-LLIBDIR' durante il collegamento ed eseguire almeno uno dei seguente:

  • aggiungi LIBDIR alla variabile d'ambiente `LD_LIBRARY_PATH' durante l'esecuzione
  • aggiungi LIBDIR alla variabile d'ambiente `LD_RUN_PATH' durante il collegamento
  • usa il flag del linker `-Wl,-rpath -Wl,LIBDIR'
  • chiedi al tuo amministratore di sistema di aggiungere LIBDIR a `/etc/ld.so.conf'

Consulta qualsiasi documentazione del sistema operativo sulle librerie condivise per ulteriori informazioni, come le pagine di manuale ld(1) e ld.so(8).

Grr, era semplice! Inoltre, "se ti capita mai di voler collegare alle librerie installate", sul serio?


Ho avuto lo stesso problema sul mio Ubuntu 14.04 quando ho provato a installare TopTracker. Ho ricevuto questi errori:

/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versione 'CXXABI_1.3.8' non trovata (richiesta da /usr/share/toptracker/bin/TopTracker)/ usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versione 'GLIBCXX_3.4.21' non trovata (richiesta da /usr/share/toptracker/bin/TopTracker)/usr /share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versione 'CXXABI_1.3.9' non trovata (richiesto da /usr/share/toptracker/bin/TopTracker)

Ma poi ho installato la versione 4.9 di gcc e il problema è scomparso:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9

Linux
  1. Perché le utilità Webp basate su Ubuntu 14.04 non funzionano e mostrano un errore di libreria?

  2. Qual è la differenza tra #!/usr/bin/env bash e #!/usr/bin/bash?

  3. cmake --version punta a /usr/bin/cmake mentre which cmake punta a /usr/local/bin

  4. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  5. Qual è il significato di /usr/sbin, /usr/local/sbin e /usr/local/bin?

/usr/bin Vs /usr/local/bin Su Linux?

Linux – /sbin/init non esiste?

Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

gcc - /usr/bin/ld errore:impossibile trovare <library> in /usr/local/lib anche se ldconfig lo elenca e il percorso è stato aggiunto a ld.so.conf

zsh:comando non trovato laravel

matlab su Linux non può tracciare nulla (impossibile caricare libstdc++.so.6:versione `CXXABI_1.3.8' non trovata)