GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verknüpfungsfehler:DSO fehlt in der Befehlszeile

Hoffentlich hilft dies jenen wie mir, die neu in Linux sind und nichts, was mit Linux zu tun hat, besonders offensichtlich finden.

Wie von talonmies angemerkt, kann ich nicht indirekt verlinken und muss daher alle zusätzlichen Bibliotheken angeben, die von den von mir verwendeten Bibliotheken benötigt werden. Das heißt, wenn ich Bibliothek A verlinke, was die Bibliotheken B und C erfordert, muss ich alle drei Bibliotheken verlinken, damit das Programm korrekt verlinkt.

Um herauszufinden, welche anderen Bibliotheken benötigt wurden, habe ich den pkg-config verwendet Befehl, für den ich hier eine Anleitung gefunden habe. Ausführen von pkg-config --print-requires --print-requires-private glfw3 gab die folgende Ausgabe, die die Liste der von glfw3 benötigten Pakete ist.

x11
xrandr
xi
xxf86vm
gl

Ich konnte dann herausfinden, welche Bibliotheken ich einbinden musste, indem ich pkg-config --libs ausführte , gefolgt vom Namen der Bibliothek. Beispiel:pkg-config --libs x11 ergab -lX11 .

Hinweis:Sie können mehrere Elemente an pkg-config übergeben als Eingabe, also läuft

pkg-config --libs $(pkg-config --print-requires --print-requires-private glfw3)

druckt alle zusätzlichen Bibliotheken, die Sie verknüpfen müssen (-lX11 -lXrandr -lXi -lXxf86vm -lGL ).

Mein Programm wird jetzt erfolgreich verknüpft, ich hoffe, dies ist für alle hilfreich, die ein ähnliches Problem haben.


Ihr Linker benötigt eine X11-Bibliothek. Sie müssen -lX11 für den Linker angeben

Versuchen Sie es mit

/usr/local/cuda/bin/nvcc -arch=compute_30 -code=sm_30,compute_30 -o Main.o Display.o FileUtil.o Timer.o NeuralNetwork.o -L/usr/lib -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu -L/usr/local/cuda/lib64 -lGLEW -lglfw3 -lGL -lGLU -lcuda -lcudart -lX11

Versuchen Sie, -pthread am Ende der Bibliotheksliste (Befehlszeile) im Makefile hinzuzufügen.

Es hat für mich funktioniert.


Linux
  1. Undefinierter Verweis auf Symbolfehler „_ZN5boost6system15system_categoryEv“.

  2. matlab Skript von der Linux-Befehlszeile ausführen

  3. MPEG-Video von der Befehlszeile aufteilen?

  4. Befehlszeile:Substring aus der Ausgabe extrahieren

  5. Wie kann ich von der Befehlszeile aus in dmesg schreiben?

Programmieren Sie Hardware über die Linux-Befehlszeile

youtube-dl – Laden Sie Youtube-Videos von der Linux-Befehlszeile herunter

So starten (rebooten) Sie Linux von der Befehlszeile aus

QuickWall – Befehlszeilentool zum Einstellen von Hintergrundbildern von Unsplash

Suchen Sie Amazon-Produkte über die Befehlszeile

Senden Sie E-Mail in Linux von der Befehlszeile aus