8

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
1
  • already tried, same result Commented Jan 27, 2015 at 7:53

1 Answer 1

20

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

gcc -L/usr/lib/x86_64-linux-gnu curl.c -o curl -lcurl
Sign up to request clarification or add additional context in comments.

3 Comments

For me it was enough to simply move the -l option to the end of the command
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?
It is because gcc linking is order-sensitive and that your linked libraries must follow the things that depend on.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.