c curl libcurl

curl c



referencia indefinida a curl_global_init, curl_easy_init y otra funciĆ³n(C) (5)

Además de la respuesta de Joachim Pileborg, es útil recordar que la vinculación gcc / g ++ es sensible al orden y que las bibliotecas vinculadas deben seguir las cosas que dependen de ellas.

$ gcc -lcurl test.c

fallará , perdiendo los mismos símbolos que antes. Menciono esto porque vine a esta página por olvidar este hecho.

Estoy tratando de usar Curl en C.

Visité la página oficial de Curl y copié el código fuente de la muestra.

a continuación se encuentra el enlace: http://curl.haxx.se/libcurl/c/sepheaders.html

cuando ejecuto este código con el comando "gcc test.c",

la consola muestra un mensaje como a continuación.

/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''

No sé cómo resolver esto.


Dependiendo de cuán malas sean las cosas, es posible que necesite una -L / en algún lugar de LDFLAGS para que el vinculador sepa dónde están las bibliotecas. ldconfig se supone que debe recogerlos y encontrarlos en cada arranque, pero en una máquina nueva puede requerir un poco de esfuerzo, como agregar un directorio a su /etc/ld.so.conf.


No enlazas con la biblioteca.

Cuando use una biblioteca externa, debe vincularla :

$ gcc test.c -lcurl

La última opción le dice a GCC que vincule ( -l ) con el curl la biblioteca.


Tengo el mismo problema, pero uso g ++ con un archivo make. Este es un problema de engarce. Necesita agregar la opción -lcurl en el compilador y en el enlazador. En mi caso en el archivo make:

CC ?= gcc CXX ?= g++ CXXFLAGS += -I ../src/ -I ./ -DLINUX -lcurl <- compile option LDFLAGS += -lrt -lpthread -lcurl <- linker option

Gerard


las respuestas anteriores son correctas, sin embargo, no olvide agregar -o test para generar el binario; de lo contrario, solo generará los archivos del objeto.

gcc test.c -lcurl -o test