2016-09-07 2 views
0

Ich habe ein Problem über die Verknüpfung von statischen Bibliotheken ..auto undefined reference

Ich habe überprüft und fuhr fort, einige Methoden, um es zu lösen, wie .. Neuordnungs Bibliotheken oder einige Optionen ..

jedoch Alles, was Ich habe getan, hat nicht funktioniert ..

- Zunächst einmal bin ich mir ziemlich sicher, dass es von Link-Fehler ist, weil ich die .a-Datei per nm-Befehl überprüft und da bestimmte Funktionen fehlerhaft angezeigt wurde Log.

So verknüpft ich statische Bibliothek wie unten ..

LOCAL_LINK_STATIC_LIBS: = \ -I $ (libdir) /libmicrohttpd.a \ -I $ (libdir) /libcryptopp.a \ . ..

myprog_LDFLAGS = -lstdC++ -g -ldl -lpthread @ GLIB_CFLAGS @ $ (LOCAL_LINK_STATIC_LIBS)

gibt es andere Möglichkeit, es zu lösen? Ich brauche wirklich Ihr Feedback. Danke fürs Lesen.

Antwort

0

Sie müssen den Namen nur mit der Option -l angeben, z. -lmicrohttpd. Der Linker fügt "lib" und ".a" oder ".so" hinzu. Verwenden Sie die Option -L, um den Suchpfad für die Bibliotheken festzulegen, z. -L$(libdir).

Verwenden Sie auch -pthread anstelle von -lpthread. -lpthread verbindet nur die Pthread-Bibliothek, während -pthread einige zusätzliche Arbeit tun wird.

+0

Ich könnte vermuten, dass Sie "-l" in "-I $ (libdir) /libmicrohttpd.a" zeigen. Es ist nicht 'l', sondern 'i', was eine Option einschließt. – owcred601

+0

Es gibt zwei Möglichkeiten, eine Bibliothek mit einer Ausführungsdatei zu verknüpfen. [-L $ (PATH) -lmicrohttpd] oder [-I (i) $ (PATH) /libmicrohttpd.a], aber die letzte Methode funktioniert nicht und das ist ein Problem. – owcred601

+0

'-I' wird verwendet, um den Suchpfad für C/C++ - Header-Dateien festzulegen, nicht zum Verknüpfen von Bibliotheken. – rveerd