2016-04-04 8 views
0

Ich erhalte folgenden Fehler nach dem Ausführen make Befehl beseitigen:Wie ld Fehler in ubuntu

/usr/bin/ld: cannot find -lGLESv2 
/usr/bin/ld: cannot find -lepoxy 
/usr/bin/ld: cannot find -lEGL 
/usr/bin/ld: cannot find -lGLESv2 
/usr/bin/ld: cannot find -lepoxy 
/usr/bin/ld: cannot find -lEGL 
/usr/bin/ld: cannot find -lGLESv2 
/usr/bin/ld: cannot find -lepoxy 
/usr/bin/ld: cannot find -lEGL 
/usr/bin/ld: cannot find -laio 
/usr/bin/ld: cannot find -lcurl 
/usr/bin/ld: cannot find -lssh2 
/usr/bin/ld: cannot find -lncursesw 
/usr/bin/ld: cannot find -lSDL 
collect2: error: ld returned 1 exit status 
main/CMakeFiles/esesc.dir/build.make:163: recipe for target 'main/esesc' failed 
make[2]: *** [main/esesc] Error 1 
CMakeFiles/Makefile2:1041: recipe for target 'main/CMakeFiles/esesc.dir/all' failed 
make[1]: *** [main/CMakeFiles/esesc.dir/all] Error 2 
Makefile:75: recipe for target 'all' failed 
make: *** [all] Error 2 

habe ich versucht, Online-Suche in diese Links gilt: ld cannot find an existing library

usr/bin/ld: cannot find -l<nameOfTheLibrary>

Hier Ich sehe, dass jede Bibliothek symbolisch mit der existierenden Bibliothek verbunden werden muss, aber ich bin mir nicht sicher, ob ich das machen soll. Kann mir jemand bitte irgendeine Technik dafür vorschlagen?

Ich weiß locate <library> und ln Befehle. Wie kann ich die oben genannten Fehler beheben? Kann mir bitte jemand etwas näher erläutern? Danke im Voraus.

Antwort

0

Ihr Link-Befehl muss wahrscheinlich eine -L vorangehen jene -l entfernen.

Suchen Sie Ihr System für die libnames zum Beispiel GLESv2.

Ich verwende "locate GLESv2". (Hinweis: orten verwendet, was „sudo updatedb“ Updates)

Auf meinem Unbuntu, die folgenden Zeilen von orten gemeldet werden.

> /usr/lib/x86_64-linux-gnu/libGLESv2.so 
> /usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so 
> /usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2 
> /usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2.0.0 

Für die so (die gemeinsame Objekt-Bibliothek) in dem erst dir gefunden, können Sie versuchen, die folgend in der Build-Befehl hinzufügen.

-L/usr/lib/x86_64-linux-gnu 

Und wiederholen Sie für jede Bibliothek Name noch nicht gelöst. Hier

ist ein Beispiel aus meinem Makefile - beachten Sie den relativen Pfad zu einer Sammlung von Bibliotheken, die ich in einem Verzeichnis „Tasche“, schrieb


R01: dtb_acs.cc 
rm -f dtb_acs 
g++ -m64 -O3 -ggdb -std=c++14 -Wall-Wextra -Wshadow -Wnon-virtual-dtor 
-pedantic -Wcast-align -Wcast-qual -Wconversion -Wpointer-arith -Wunused 
-Woverloaded-virtual 
    -O0 dtb_acs.cc -o dtb_acs 
-L../../bag -lbag_i686 -lposix_i686 -lrt -pthread 
^^^^^^^^^^^ three -l<libname> are in the -L dir 

Bei Bedarf (weil der Aufwand nicht tat lösen etwas), versuchen -l und eine bestimmte Bibliothek hinzufügen, wie -llibGLESv2.so (oder .a, wie der Fall ist) sein kann

Viel Glück.

+0

Es gibt eine _lot_ von .so Bibliotheken in/usr/lib/x86_64-linux-gnu. –