2013-05-10 4 views
25

Ben Curl resmi sayfası ve kopyalanan örnek kaynak kodu ziyaret C.tanımsız başvuru curl_easy_init ve diğer fonksiyonu (C)

yılında Curl kullanmaya çalışıyorum, curl_global_init için. http://curl.haxx.se/libcurl/c/sepheaders.html

Ben komuta "gcc test.c" ile bu kodu çalıştırmak ,

konsol aşağıda gibi mesajı gösterir: Aşağıdaki

bağlantıdır.

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

Bunu nasıl çözeceğimi bilmiyorum.

cevap

62

Kitaplık ile bağlantı oluşturmuyorsunuz.

Eğer bağlantı onunla gerekir harici bir kütüphane kullanırken:

$ gcc test.c -lcurl 

son seçenek GCC kütüphanesinde curl ile (-l) bağlamak için söyler.

12

Joachim Pileborg'un cevabına ek olarak, gcc/g ++ bağlantısının siparişe duyarlı olduğunu ve bağlantılı kitaplıklarınızın bunlara bağlı olan şeyleri takip etmesi gerektiğini hatırlamak yararlıdır.

$ gcc -lcurl test.c

öncekiyle aynı sembolleri eksik başarısız olur. Bunu söylüyorum çünkü bu gerçeği unutmak için bu sayfaya geldim.

0

Aynı sorunu yaşıyorum, ancak g ++ ile bir make dosyası kullanıyorum. Bu bir linker sorundur. Derleyicide ve bağlayıcıda seçenek -lcurl eklemeniz gerekir. markası dosyada Benim durumumda :

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

Gerard

1

önceki yanıtlarınız doğru ise ikili üretmek için -o testi eklemeyi unutmayın, aksi takdirde sadece nesne dosyalarını üretecektir .

gcc test.c -lcurl -o testi