J'essaie d'utiliser Curl en C.
J'ai visité la page officielle de Curl et copié un exemple de code source.
ci-dessous se trouve le lien: http://curl.haxx.se/libcurl/c/sepheaders.html
quand je lance ce code avec la commande "gcc test.c",
la console affiche un message comme ci-dessous.
/tmp/cc1vsivQ.o: In function `main':
test.c:(.text+0xe1): undefined reference to `curl_global_init'
test.c:(.text+0xe6): undefined reference to `curl_easy_init'
test.c:(.text+0x10c): undefined reference to `curl_easy_setopt'
test.c:(.text+0x12e): undefined reference to `curl_easy_setopt'
test.c:(.text+0x150): undefined reference to `curl_easy_setopt'
test.c:(.text+0x17e): undefined reference to `curl_easy_cleanup'
test.c:(.text+0x1b3): undefined reference to `curl_easy_cleanup'
test.c:(.text+0x1db): undefined reference to `curl_easy_setopt'
test.c:(.text+0x1e7): undefined reference to `curl_easy_perform'
test.c:(.text+0x1ff): undefined reference to `curl_easy_cleanup'
Je ne sais pas comment résoudre ce problème.
Vous ne créez pas de lien avec la bibliothèque.
Lorsque vous utilisez une bibliothèque externe, vous devez link with:
$ gcc test.c -lcurl
La dernière option indique à GCC de lier (-l
) à la bibliothèque curl
.
En plus de la réponse de Joachim Pileborg, il est utile de rappeler que les liens gcc/g ++ sont sensibles à l'ordre et que vos bibliothèques liées doivent suivre les éléments qui en dépendent.
$ gcc -lcurl test.c
échouera , manquant les mêmes symboles que précédemment. Je mentionne cela parce que je suis venu sur cette page pour oublier ce fait.
J'ai le même problème, mais j'utilise g ++ avec un fichier make . Il s'agit d'un problème lié à l'éditeur de liens . faire un fichier:
CC ?= gcc
CXX ?= g++
CXXFLAGS += -I ../src/ -I ./ -DLINUX -lcurl <- compile option
LDFLAGS += -lrt -lpthread -lcurl <- linker option
Gerard
les réponses précédentes sont correctes, mais n'oubliez pas d'ajouter -o test pour produire le binaire, sinon vous ne générerez que les fichiers objets.
gcc test.c -lcurl -o test
En fonction de l'état des choses, vous aurez peut-être besoin d'un -L/quelque part dans LDFLAGS pour indiquer à l'éditeur de liens où se trouvent les bibliothèques. ldconfig est censé les récupérer et les trouver à chaque démarrage, mais sur une nouvelle machine, cela peut prendre un peu de temps, comme ajouter un répertoire à votre /etc/ld.so.conf.