【问题标题】:(dlang) How to link libcurl using gdc?(dlang) 如何使用 gdc 链接 libcurl?
【发布时间】:2015-01-01 14:47:45
【问题描述】:

我试图将 libcurl 链接到我的程序,但链接器告诉我一些错误。 我检查了是否使用了“-lcurl”选项。我还检查了 libcurl 是否安装正确。 我试过的命令是:

gdc myprogram.d -o myprogram -lcurl

链接器告诉我以下错误:

/usr/lib/gcc/x86_64-linux-gnu/4.8/libgphobos2.a(curl.o): In function `_D3std3net4curl4Curl18_sharedStaticCtor1FZv':
/build/buildd/gcc-4.8-4.8.2/build/x86_64-linux-gnu/libphobos/src/../../../../src/libphobos/src/std/net/curl.d:3432: undefined reference to `curl_global_init'
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgphobos2.a(curl.o): In function `_D3std3net4curl4Curl8shutdownMFZv':
/build/buildd/gcc-4.8-4.8.2/build/x86_64-linux-gnu/libphobos/src/../../../../src/libphobos/src/std/net/curl.d:3561: undefined reference to `curl_easy_cleanup'
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgphobos2.a(curl.o): In function `shutdown':
/build/buildd/gcc-4.8-4.8.2/build/x86_64-linux-gnu/libphobos/src/../../../../src/libphobos/src/std/net/curl.d:3561: undefined reference to `curl_easy_cleanup'
/build/buildd/gcc-4.8-4.8.2/build/x86_64-linux-gnu/libphobos/src/../../../../src/libphobos/src/std/net/curl.d:3561: undefined reference to `curl_easy_cleanup'
/build/buildd/gcc-4.8-4.8.2/build/x86_64-linux-gnu/libphobos/src/../../../../src/libphobos/src/std/net/curl.d:3561: undefined reference to `curl_easy_cleanup'
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgphobos2.a(curl.o): In function `_D3std3net4curl4HTTP4Impl6__dtorMFZv':
/build/buildd/gcc-4.8-4.8.2/build/x86_64-linux-gnu/libphobos/src/../../../../src/libphobos/src/std/net/curl.d:2033: undefined reference to `curl_slist_free_all'

有一些使用官方编译器 dmd 的情况,但我找不到使用 gdc 的情况。 有什么想法吗?

(Ubuntu 14.02 LTS amd64)

【问题讨论】:

  • 尝试将-lcurl 放在命令行的开头,所以gdc -lcurl myprogram.d 看看会发生什么。我之前看到过一个与链接顺序有关的错误,这可能会有所帮助。
  • 我按照你写的那样尝试了,但发生了同样的错误。这是怎么回事!?!?

标签: linker d libcurl gdc


【解决方案1】:

你安装了吗

libcurl4-gnutls-dev

如果是,试试这个:

gdc -lcurl-gnutls myprogram.d -o myprogram 

【讨论】:

  • 谢谢你的回答,但它不起作用......结果是一样的。我尝试使用带有选项“-L-lphobos2 -L-lcurl”的官方编译器 dmd 做同样的事情并且它有效。
【解决方案2】:

问题在于程序链接的顺序,在 Ubuntu 上,在 libgphobos 后面添加 curl 很重要,这样可以正常工作:

gdc myprogram.d /usr/lib/gcc/x86_64-linux-gnu/4.8/libgphobos2.a -o myprogram `curl-config --libs`

some more details

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    相关资源
    最近更新 更多