Sie können versuchen, curl-config --libs
zu verwenden .
Ihre Header-Dateieinschlüsse sind in Ordnung; Ihr Problem tritt beim Verknüpfungsschritt auf. Um mit libcurl zu verlinken, müssen Sie den -lcurl
hinzufügen Befehlszeilenoption, vorausgesetzt, es ist in einem Standardverzeichnis installiert:
g++ -o sms ./src/sms.o -lcurl
Wenn es nicht in einem Standardverzeichnis installiert ist, müssen Sie auch den -L/path/to/libcurl
hinzufügen , z.B. etwas wie:
# Assuming that /home/geekman/workspace/libcurl is where libcurl.a is located
g++ -o sms ./src/sms.o -L/home/geekman/workspace/libcurl -lcurl
Beachten Sie auch, dass die -lcurl
Option muss nach erscheinen die Liste der Objektdateien, die Sie verknüpfen, sonst wird es nicht richtig verknüpft.
Jeder, der ecplise CDT verwendet, muss Folgendes tun. Geben Sie zuerst am Terminal
eincurl-config --libs
Auf meinem Rechner lautet das Ergebnis
-L/usr/lib/i386-linux-gnu -lcurl
Dann machen Sie es nach diesem Screenshot und Sie können kompilieren. Übrigens vergessen Sie nicht, Header-Dateien in Ihren Code einzufügen
Sie geben also den Bibliotheksordnerpfad ohne -L und den Bibliotheksnamen ohne -l ein, da sie automatisch vom Linker hinzugefügt werden.
Eine alternative Antwort (die erste ist ausgezeichnet). Erwägen Sie, die von "pkg-config --libs libcurl" zurückgegebene Ausgabe als Argument für Ihren Compiler zu verwenden.
Zum Beispiel
CPPFLAGS=`pkg-config --libs libcurl`
g++ $CPPFLAGS meinedatei.o
Pkg-config ist eine Standardmethode für Open-Source-Bibliotheken, um Ihnen mitzuteilen, wie Sie mit ihnen verknüpfen / ihre Dateien #einschließen können.