632 Stimmen

/usr/bin/ld: kann -l<NameDerBibliothek> nicht finden.

Ich versuche, mein Programm zu kompilieren, und es gibt diesen Fehler zurück:

usr/bin/ld: kann -l nicht finden

In meiner Makefile verwende ich den Befehl g++ und verlinke mit meiner Bibliothek, die ein symbolischer Link zu meiner Bibliothek ist, die sich in einem anderen Verzeichnis befindet.

Gibt es bitte eine Option, die hinzugefügt werden kann, damit es funktioniert?

3voto

Shicheng Guo Punkte 1107

Hier ist die Ubuntu-Information meines Laptops.

lsb_release -a
Keine LSB-Module verfügbar.
Distributor ID: Ubuntu
Beschreibung: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic

Ich verwende locate, um die .so-Dateien für boost_filesystem und boost_system zu finden.

locate libboost_filesystem
locate libboost_system

Verknüpfen Sie dann die .so-Dateien mit /usr/lib und benennen Sie sie in .so um.

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 /usr/lib/libboost_filesystem.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 /usr/lib/libboost_system.so

Fertig! Das R-Paket velocyto.R wurde erfolgreich installiert!

2voto

Vzbux Punkte 121

Dieser Fehler kann auch auftreten, wenn der symbolische Link zu einer dynamischen Bibliothek, .so, führt, aber aus Gründen der Abwärtskompatibilität -static unter den Link-Flags erscheint. Wenn dies der Fall ist, versuchen Sie, es zu entfernen.

2voto

Brian Burns Punkte 17530

Die Bibliothek, zu der ich eine Verbindung herstellen wollte, stellte sich als eine nicht standardmäßig benannte heraus (d. h. sie war nicht mit 'lib' vorangestellt), daher empfahlen sie, einen Befehl wie diesen zu verwenden, um sie zu kompilieren -

gcc test.c -Iinclude lib/cspice.a -lm

1voto

smwikipedia Punkte 56976

Ich bin auf dieselbe Fehlermeldung gestoßen.

Ich habe das cmocka als so erstellt und versucht, es mit meinem ausführbaren Programm zu verknüpfen. Aber ld beschwert sich immer, wie unten angegeben:

/usr/bin/ld: kann -lcmocka nicht finden

Es stellt sich heraus, dass nach dem Erstellen von cmocka 3 Dateien generiert werden:

  1. libcmocka.so
  2. libcmocka.so.0
  3. libcmocka.so.0.7.0

1 und 2 sind Symbol-Links und nur 3 ist die echte Datei.

Ich habe nur die 1 in meinen Bibliotheksordner kopiert, wo ld die 3 nicht finden konnte.

Nachdem ich alle 3 kopiert habe, funktioniert ld.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X