2013-05-10 26 views
25

Tôi cố gắng để sử dụng Curl trong C.tài liệu tham khảo không xác định để curl_global_init, curl_easy_init và chức năng khác (C)

tôi đến thăm Curl trang chính thức, và sao chép mã nguồn mẫu.

dưới đây là liên kết: http://curl.haxx.se/libcurl/c/sepheaders.html

khi tôi chạy mã này với lệnh "gcc test.c",

console thấy thông báo như bên dưới.

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

Tôi không biết cách giải quyết vấn đề này.

Trả lời

62

Bạn không liên kết với thư viện.

Khi sử dụng một thư viện bên ngoài bạn phải liên kết với nó:

$ gcc test.c -lcurl 

Tùy chọn cuối cùng nói với GCC để liên kết (-l) với thư viện curl.

12

Ngoài câu trả lời của Joachim Pileborg, bạn nên nhớ rằng liên kết gcc/g ++ nhạy cảm với thứ tự và thư viện được liên kết của bạn phải tuân theo những điều phụ thuộc vào chúng.

$ gcc -lcurl test.c

sẽ thất bại, thiếu những biểu tượng giống như trước. Tôi đề cập đến điều này bởi vì tôi đã đến trang này để quên đi sự kiện này.

0

Tôi có cùng một vấn đề, nhưng tôi sử dụng g ++ với một tập tin thực hiện. Đây là sự cố liên kết. Bạn cần phải thêm tùy chọn -lcurl trên trình biên dịch và trên trình liên kết. Trong trường hợp của tôi vào làm cho tập tin:

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

Gerard

1

các câu trả lời trước là chính xác, tuy nhiên đừng quên để thêm thử nghiệm -o để sản xuất nhị phân, nếu không bạn sẽ chỉ tạo ra các tập tin đối tượng .

gcc test.c -lcurl -o test