Use libcurl undefined reference to 'curl_easy_init'
Asked Answered
M

1

9

use libcurl to writer some test code. when try to compile, it says undefined reference. already use -lcurl or -L compile option.

root@ubuntu:~/work/test/curlTest# curl-config --libs
-L/usr/lib/x86_64-linux-gnu -lcurl
root@ubuntu:~/work/test/curlTest# gcc -L/usr/lib/x86_64-linux-gnu -lcurl curl.c -o curl
/tmp/ccnFnpaW.o: In function `main':
curl.c:(.text+0xb1): undefined reference to `curl_global_init'
curl.c:(.text+0xbc): undefined reference to `curl_easy_init'
curl.c:(.text+0x109): undefined reference to `curl_easy_setopt'
curl.c:(.text+0x136): undefined reference to `curl_easy_setopt'
curl.c:(.text+0x145): undefined reference to `curl_easy_perform'
collect2: error: ld returned 1 exit status
Merriweather answered 27/1, 2015 at 7:45 Comment(1)
already tried, same resultMerriweather
O
20

-lcurl should be put in the end of gcc command.

gcc -L/usr/lib/x86_64-linux-gnu curl.c -o curl -lcurl
Overkill answered 27/1, 2015 at 7:49 Comment(3)
For me it was enough to simply move the -l option to the end of the commandHuda
Great, it worked for me. But I still don't know why the position of -lcurl matters. Why it failed before -o but work fine after -o?Impetus
It is because gcc linking is order-sensitive and that your linked libraries must follow the things that depend on.Shipshape

© 2022 - 2024 — McMap. All rights reserved.