2014-03-06 5 views
13

Ich benutze gsl. Nachdem ich meine CPP-Datei kompiliert und ausgeführt es, stand ich mit folgenden Fehler:Fehler beim Laden von gemeinsam genutzten Bibliotheken: libgsl.so.0: kann keine gemeinsame Objektdatei öffnen: Keine solche Datei oder Verzeichnis

Fehler beim Laden von Shared Libraries: libgsl.so.0: kann nicht mit anderen geteilt Objektdatei öffnen: Keine solche Datei oder das Verzeichnis

I gefunden gleiche wie dieses Problem in: https://groups.google.com/forum/#!topic/cortex_var/6vluX7pP0Sk & Linux error while loading shared libraries: cannot open shared object file: No such file or directory & http://www.gnu.org/software/gsl/manual/html_node/Shared-Libraries.html

Und ich habe wie in den obigen Links getan schrieb aber der Fehler blieb noch. Kann mir jemand helfen?

+1

Wo befindet sich libgsl.so.0? – DmitryARN

+1

Es ist an der richtigen Stelle Ich neu installiert gsl von Terminal und oben Fehler ist jetzt nicht vorhanden. Aber ich habe einen Segmentierungsfehler und sollte darüber hinweg kommen. Vielen Dank für Ihre – Abdolvahed

+2

Vielen Dank für Ihren Link zur Verfügung gestellt. Ich fand, dass https://www.gnu.org/software/gsl/manual/html_node/Shared-Libraries.html für mich nützlich ist. Hast du dein Problem gelöst? – buzhidao

Antwort

10

Um es

starten Borne Shell haben die folgenden Schritte machen arbeiten

$LD_LIBRARY_PATH= path to your gsl lib folder inside the gsl installation folder 
$export LD_LIBRARY_PATH 

jetzt laufen die ausführbare Datei

Es sollte gut funktionieren.

1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/shg047/software/gsl/lib/ 

wie: to-mr: Fehler beim Laden von Shared Libraries: libgsl.so.19: kann nicht mit anderen geteilt öffnen Objektdatei: Keine solche Datei oder das Verzeichnis

3

bekam ich den gleichen Fehler mit Krita auf Arch Linux. Ich habe einen symbolischen Link mit

ln /usr/lib/libgsl.so /usr/lib/libgsl.so.0 

gemacht und das hat es behoben.

+0

In meinem Fall war "libgsl.so" in "/ usr/local/lib", also löste "ln /usr/local/lib/libgsl.so /usr/local/lib/libgsl.so.0" mein Problem. – Kibo

1

Haben Sie versucht, Ihre Bibliothek zu aktualisieren? Das Programm, das ich ausführen wollte, benötigte einfach eine neuere Version von gsl (ich hatte 1.9.5, während 2.0.0 oder neuer benötigt wurde).

Wenn Sie auf Bogen sind, können Sie laufen:

yaourt gsl 

und die entsprechende auswählen.

3

Zuerst müssen Sie die Datei suchen (libgsl.so.0). Sie können dies tun, zum Beispiel durch den find Befehl:

find/-Name "libgsl.so.0" 

Nehmen wir an, die Datei in /usr/local/lib befindet. (Wenn die Datei nicht gefunden wurde, installieren Sie das entsprechende Paket oder den Quellcode herunterladen, es bauen und installieren.) Nun haben Sie zwei Möglichkeiten:

(1) Schnell & Schmutzige:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 
export LD_LIBRARY_PATH 

Dies fügt den Pfad der Bibliothek zu einer Umgebungsvariablen hinzu. Der Nachteil dieser Option ist, dass sie nur für die aktuelle Sitzung gültig ist. Es wird nicht für andere Benutzer funktionieren. Es wird nicht funktionieren, sobald Sie sich aus- und wieder anmelden.

(2) Permanent:

Überprüfen Sie Ihre /etc/ld.so.conf. Wenn /usr/local/lib dort nicht aufgeführt ist, fügen Sie es hinzu. Führen Sie jetzt ldconfig aus, um die freigegebene Objektdatei zu erkennen, und fügen Sie sie einem systemweiten Index hinzu.

2

Nach meiner Erfahrung, FastStructure ist abhängig von GSL 1.6 aber nicht die neueste Version.

wget http://gnu.mirror.vexxhost.com/gsl/gsl-1.6.tar.gz 
tar -zxvf gsl-1.6.tar.gz 
cd gsl-1.16 
./configure 
make 
sudo make install 

Fügen Sie diese Zeilen zu Ihrer .bashrc Datei in Ihrem Home-Verzeichnis hinzu.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 
export CFLAGS="-I/usr/local/include" 
export LDFLAGS="-L/usr/local/lib" 

Dann starten Sie Source ~/.bashrc, um diese Umgebungsvariablen festzulegen.

Es funktioniert gut, wenn ich die Version von der neuesten auf die 1.6 ändern.

1

Sie können gsl-config --libs in Ihrer Makefile oder in der Befehlszeile verwenden, wenn Sie die gsl-Bibliothek verknüpfen. Tippen Sie einfach Sie können die Optionen finden, die es Ihnen anbietet. Wählen Sie die Optionen, die Sie benötigen, finden Sie den Kompilierungs- und Linkprozess viel einfacher als zuvor. Als Ergebnis, wenn ich in meinem Terminal gsl-config --libs eintippe, bekomme ich -L/usr/local/lib -lgsl -lgslcblas -lm. Obwohl es sehr einfach ist, sollten Sie zuerst wissen, wo Sie gsl installiert ist. Sie können das Verzeichnis zur Umgebungsvariablen PATH hinzufügen oder den absoluten Pfad zum Ausführen von gsl-config verwenden.

Verwandte Themen