Tôi đang cố gắng sử dụng std.net.curl trên Ubuntu Linux 32 bit (11.10 Ocelot) bằng DMD 2.058.Lỗi liên kết std.net.curl trong Linux
Khi tôi xây dựng (dmd source.d
) tôi nhận được:
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticCtor30FZv':
std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticCtor30FZv+0x6): undefined reference to `curl_global_init'
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticDtor31FZv':
std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticDtor31FZv+0x4): undefined reference to `curl_global_cleanup'
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/libphobos2.a(curl_12fd_140.o): In function `_D3std3net4curl4HTTP4Impl6__dtorMFZv':
std/net/curl.d:(.text._D3std3net4curl4HTTP4Impl6__dtorMFZv+0x12): undefined reference to `curl_slist_free_all'
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/libphobos2.a(curl_12fd_140.o): In function `_D3std3net4curl4HTTP3dupMFZS3std3net4curl4HTTP':
std/net/curl.d:(.text._D3std3net4curl4HTTP3dupMFZS3std3net4curl4HTTP+0x53): undefined reference to `curl_slist_append'
[snip]
tôi thêm -L-lcurl
vào dòng lệnh của tôi (full lệnh: dmd source.d -L-lcurl
) nhưng tôi nhận được kết quả chính xác như nhau. Tôi đã cài đặt libcurl4-openssl. Tôi có thể xây dựng một chương trình simple C curl trên máy tính này mà không có vấn đề (gcc simple.c -lcurl
). Tôi không chắc nơi để nhìn từ đây để tìm ra điều này.
Cập nhật: Đây là cách các mối liên kết được gọi theo dmd -v
:
gcc source.o -o source -m32 -lcurl -Xlinker -L/usr/lib -Xlinker -L/usr/lib64 -Xlinker --no-warn-search-mismatch -Xlinker --export-dynamic -lphobos2 -lpthread -lm -lrt
Hãy thử chạy với '-v' (' dmd -v source.d -L-lcurl') để xem cách trình liên kết được gọi. – kennytm
@KennyTM Cập nhật bài đăng với thông tin. – eco