Linking-Fehler: DSO fehlt von der Kommandozeile aus
Ich bin ziemlich neu bei Linux (Ubuntu 14.04 LTS 64bit), kommt von Windows, und bin versucht, den port über eine bestehende CUDA-Projekt von mir.
Beim verknüpfen über
/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
Ich die folgende Fehlermeldung auftreten:
/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_clipboard.c.o): undefined reference to symbol 'XConvertSelection'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [CUDANN] Error 1
Die Antwort scheint eng mit den Lösungen in diesem post (Seltsam verknüpfen Fehler: DSO fehlt von der Kommandozeile aus), aber angesichts meiner Unerfahrenheit mit Linux war ich nicht in der Lage, passen Sie zu meinem eigenen problem.
Irgendwelche Ideen auf, was das problem sein könnte?
Hier ist die vollständige Ausgabe während der Kompilierung: https://gist.github.com/wbolden/857eddd11e4dcb915c02
Und hier ist mein Versuch an einem Makefile:
https://gist.github.com/wbolden/135033daae04ed0d8cf3
Wie gesagt, ich bin ziemlich neu bei Linux (ich habe nur die Arbeit mit ihm für ein paar Tage), was also könnte klar sein, jemanden mit selbst moderate Erfahrung ist nicht alles, dass für mich klar. Mit ldd bekomme ich die folgende gist.github.com/WilliamHBolden/51a8721b4f8d89df2cef aber ich verstehe nicht, was mit ihm zu tun. Ich habe versucht, hinzufügen -L/usr/x86_64-linux-gnu-und -L/lib64 aber das änderte nichts an der Fehlermeldung.
Vielleicht müssen Sie verlassen gist oder andere system, weil jetzt gist sind nicht verfügbar
Meinen Benutzernamen geändert, ersetzen WilliamHBolden mit wbolden
Siehe auch Merkwürdig-linking-Fehler: DSO fehlt von der Befehl-Linie, DSO fehlt von der Befehl-Linie und Linking Fehler: DSO fehlt von der Befehl-Linie.
InformationsquelleAutor Will Bolden | 2014-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hoffentlich wird dies eine Hilfe sein für diejenigen, wie mich, die neu auf Linux und nicht finden, alles, was mit Linux zu sein, besonders deutlich.
Wie bereits von talonmies, ich bin nicht in der Lage, indirekt und als solche angeben müssen zusätzliche Bibliotheken benötigt, die von den Bibliotheken, die ich verwende. Das heißt, wenn ich einen link library, die erfordert, Bibliotheken B und C, ich brauche alle drei Bibliotheken für das Programm für den link korrekt.
Zu finden, was andere Bibliotheken benötigt wurden, verwendete ich die
pkg-config
Befehl, für welche ich gefunden habe, eine Anleitung hier. Läuftpkg-config --print-requires --print-requires-private glfw3
gab die folgende Ausgabe, die die Liste der benötigten Pakete von glfw3.War ich dann in der Lage zu finden, was Bibliotheken, die ich brauchte, um durch laufen
pkg-config --libs
, gefolgt von dem Namen der Bibliothek. Zum Beispielpkg-config --libs x11
ergab-lX11
.Hinweis: übergeben Sie mehrere Artikel
pkg-config
als Eingabe, so läuftwird, drucken Sie alle zusätzlichen Bibliotheken, die Sie brauchen, zu verknüpfen (
-lX11 -lXrandr -lXi -lXxf86vm -lGL
).Mein Programm jetzt links erfolgreich, ich hoffe, dass dies hilfreich für jeden, der ein ähnliches problem.
InformationsquelleAutor Will Bolden
Ihr linker müssen die X11-Bibliothek,die Sie angeben müssen -lX11 zu linker
Versuchen
bolden: diese Antwort ist Ihr problem lösen. Hinzufügen der x11-Bibliothek beseitigt das dso Fehler. Jetzt haben Sie unerfüllte Abhängigkeiten. Fügen Sie diese.
Ich hatte eine ähnliche Fehlermeldung und dieses arbeitete für mich.
InformationsquelleAutor Rahul R Dhobi
Verwenden Sie die folgenden Befehle aus, um das Problem zu beheben:
InformationsquelleAutor HuuHoangNguyen