digitalmars.D.learn - How compile program with curl support?
- ilya-stromberg (26/26) Aug 22 2013 I try to compile program with curl support, but I have error:
- evilrat (6/8) Aug 22 2013 i rarely use rdmd, so i can only advice to try using dmd directly
- Ivan Kazmenko (19/23) Aug 22 2013 I recently had the same problem on Windows (thread:
- Ivan Kazmenko (7/8) Aug 22 2013 Sorry, that should have been:
- evilrat (5/17) Aug 22 2013 underscores is a part of Windows name mangling, this means on
- David (3/5) Aug 22 2013 Install libcurl-dev
- ilya-stromberg (6/11) Aug 22 2013 Thanks for help. Correct answer was here:
- evilrat (4/17) Aug 22 2013 why do u link phobos when compiler do this for you?
- ilya-stromberg (12/13) Aug 22 2013 Because without it doesn't work:
- evilrat (2/15) Aug 22 2013 none really, especially on linux :(
- David (19/35) Aug 22 2013 Can't reproduce this:
- ilya-stromberg (4/11) Aug 24 2013 It looks like regression. Which OS and compiler version do you
- David (3/17) Aug 24 2013 Archlinux 64 Bit 2.063.2, and no, this is not a regression, this worked
- Gary Willoughby (3/4) Aug 22 2013 For some reason the order of linked libs matters especially with
- Jordi Sayol (4/25) Aug 22 2013 --
I try to compile program with curl support, but I have error: import std.net.curl; void main() { } rdmd main.d /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticCtor34FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticCtor34FZv+0xf): undefined reference to `curl_global_init' /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticDtor35FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticDtor35FZv+0x5): undefined reference to `curl_global_cleanup' I try to import libcurl.a library, the same problem: rdmd -L/usr/lib/x86_64-linux-gnu/libcurl.a main.d /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticCtor34FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticCtor34FZv+0xf): undefined reference to `curl_global_init' /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticDtor35FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticDtor35FZv+0x5): undefined reference to `curl_global_cleanup' What should I do to get curl support? OS is Linux Ubuntu 12.10.
Aug 22 2013
On Thursday, 22 August 2013 at 07:28:52 UTC, ilya-stromberg wrote:I try to compile program with curl support, but I have error: ...i rarely use rdmd, so i can only advice to try using dmd directly with following flags and see if it works, and if works its a rdmd flags problem in your case: dmd main.d -L-L/path/to/libcurl -L-llibcurlname.a (note that first -L is dmd flag to pass linker options)
Aug 22 2013
On Thursday, 22 August 2013 at 07:28:52 UTC, ilya-stromberg wrote:undefined reference to `curl_global_init' undefined reference to `curl_global_cleanup' What should I do to get curl support? OS is Linux Ubuntu 12.10.I recently had the same problem on Windows (thread: http://forum.dlang.org/thread/wdmqzyqoowrhqfpwduej forum.dlang.org). It boiled down to the following: the lib file contained functions named like "curl_global_init" but the linker searched for "_curl_global_init" (starting with underscore). I don't have OSX available, but the OSX file libcurl.a I downloaded contains underscored names and your linker searches for non-underscored ones, so that may be an inverse problem. Unless some OS-specific linking magic is supposed to take care of that in your case. On Windows, I changed the way to produce libcurl D bindings from implib.exe curl.lib libcurl.dll to implib.exe /system curl.lib libcurl.dll and then I link in order to introduce the underscores. Clearly I'm not an expert, but this may mean you could find a way to [re]produce the bindings library on your side as well. Ivan Kazmenko.
Aug 22 2013
On Thursday, 22 August 2013 at 10:00:20 UTC, Ivan Kazmenko wrote:and then I linkSorry, that should have been: and then I link just like dmd myprog.d having both curl.lib (D bindings to C++ binary, built locally) and libcurl.dll (downloaded C++ libcurl binary) findable by the linker (in the same directory in my case).
Aug 22 2013
On Thursday, 22 August 2013 at 10:00:20 UTC, Ivan Kazmenko wrote:On Thursday, 22 August 2013 at 07:28:52 UTC, ilya-stromberg wrote:underscores is a part of Windows name mangling, this means on Windows one can find both C and its own scheme variant(pascal scheme?), i don't remember all details(though you can easily find it on the internet), but this is explains ur case.undefined reference to `curl_global_init' undefined reference to `curl_global_cleanup' What should I do to get curl support? OS is Linux Ubuntu 12.10.I recently had the same problem on Windows (thread: http://forum.dlang.org/thread/wdmqzyqoowrhqfpwduej forum.dlang.org). It boiled down to the following: the lib file contained functions named like "curl_global_init" but the linker searched for "_curl_global_init"
Aug 22 2013
What should I do to get curl support? OS is Linux Ubuntu 12.10.Install libcurl-dev http://packages.ubuntu.com/de/lucid/libcurl-dev Add "-L-lcurl" to your commandline
Aug 22 2013
On Thursday, 22 August 2013 at 10:24:49 UTC, David wrote:Thanks for help. Correct answer was here: http://forum.dlang.org/post/mailman.1089.1350735488.5162.digitalmars-d puremagic.com $ dmd -L-lphobos2 -L-lcurl main.d As I can see by google, this is common issue. How can we document the compilation proses?What should I do to get curl support? OS is Linux Ubuntu 12.10.Install libcurl-dev http://packages.ubuntu.com/de/lucid/libcurl-dev Add "-L-lcurl" to your commandline
Aug 22 2013
On Thursday, 22 August 2013 at 13:15:39 UTC, ilya-stromberg wrote:On Thursday, 22 August 2013 at 10:24:49 UTC, David wrote:why do u link phobos when compiler do this for you? btw in fact i've seen somewhere on site/wiki/forums instructions "how to build libcurl for D" or something.Thanks for help. Correct answer was here: http://forum.dlang.org/post/mailman.1089.1350735488.5162.digitalmars-d puremagic.com $ dmd -L-lphobos2 -L-lcurl main.d As I can see by google, this is common issue. How can we document the compilation proses?What should I do to get curl support? OS is Linux Ubuntu 12.10.Install libcurl-dev http://packages.ubuntu.com/de/lucid/libcurl-dev Add "-L-lcurl" to your commandline
Aug 22 2013
On Thursday, 22 August 2013 at 13:20:44 UTC, evilrat wrote:why do u link phobos when compiler do this for you?Because without it doesn't work: $ dmd -L-lcurl main.d /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticCtor34FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticCtor34FZv+0xf): undefined reference to `curl_global_init' /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticDtor35FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticDtor35FZv+0x5): undefined reference to `curl_global_cleanup' Have you got any ideas why?!
Aug 22 2013
On Thursday, 22 August 2013 at 13:27:32 UTC, ilya-stromberg wrote:On Thursday, 22 August 2013 at 13:20:44 UTC, evilrat wrote:none really, especially on linux :(why do u link phobos when compiler do this for you?Because without it doesn't work: $ dmd -L-lcurl main.d /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticCtor34FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticCtor34FZv+0xf): undefined reference to `curl_global_init' /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticDtor35FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticDtor35FZv+0x5): undefined reference to `curl_global_cleanup' Have you got any ideas why?!
Aug 22 2013
Am 22.08.2013 15:27, schrieb ilya-stromberg:On Thursday, 22 August 2013 at 13:20:44 UTC, evilrat wrote:Can't reproduce this: ─[dav1d archbox][/tmp]╼ cat c.d import std.net.curl; void main() {} ─[dav1d archbox][/tmp]╼ dmd c.d /usr/lib/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticCtor34FZv': (.text._D3std3net4curl4Curl19_sharedStaticCtor34FZv+0xf): undefined reference to `curl_global_init' /usr/lib/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticDtor35FZv': (.text._D3std3net4curl4Curl19_sharedStaticDtor35FZv+0x5): undefined reference to `curl_global_cleanup' collect2: Fehler: ld gab 1 als Ende-Status zurück --- errorlevel 1 ─[dav1d archbox][/tmp]╼ dmd c.d -L-lcurl ─[dav1d archbox][/tmp]╼ So I only get these errors when *not* linking against curl.why do u link phobos when compiler do this for you?Because without it doesn't work: $ dmd -L-lcurl main.d /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticCtor34FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticCtor34FZv+0xf): undefined reference to `curl_global_init' /usr/lib/x86_64-linux-gnu/libphobos2.a(curl.o): In function `_D3std3net4curl4Curl19_sharedStaticDtor35FZv': std/net/curl.d:(.text._D3std3net4curl4Curl19_sharedStaticDtor35FZv+0x5): undefined reference to `curl_global_cleanup' Have you got any ideas why?!
Aug 22 2013
On Thursday, 22 August 2013 at 16:28:32 UTC, David wrote:Can't reproduce this: ─[dav1d archbox][/tmp]╼ cat c.d import std.net.curl; void main() {} ─[dav1d archbox][/tmp]╼ dmd c.d -L-lcurl ─[dav1d archbox][/tmp]╼ So I only get these errors when *not* linking against curl.It looks like regression. Which OS and compiler version do you use? I have Linux Ubuntu 12.10 and DMD 2.063.2.
Aug 24 2013
Am 24.08.2013 09:56, schrieb ilya-stromberg:On Thursday, 22 August 2013 at 16:28:32 UTC, David wrote:Archlinux 64 Bit 2.063.2, and no, this is not a regression, this worked for every DMD release so far.Can't reproduce this: ─[dav1d archbox][/tmp]╼ cat c.d import std.net.curl; void main() {} ─[dav1d archbox][/tmp]╼ dmd c.d -L-lcurl ─[dav1d archbox][/tmp]╼ So I only get these errors when *not* linking against curl.It looks like regression. Which OS and compiler version do you use? I have Linux Ubuntu 12.10 and DMD 2.063.2.
Aug 24 2013
On Thursday, 22 August 2013 at 13:20:44 UTC, evilrat wrote:why do u link phobos when compiler do this for you?For some reason the order of linked libs matters especially with curl.
Aug 22 2013
On 22/08/13 15:20, evilrat wrote:On Thursday, 22 August 2013 at 13:15:39 UTC, ilya-stromberg wrote:On static linking, the library order cares. "libphobos2" depends on "libcurl", so "libphobos2" should be passed to the linker before than "libcurl".On Thursday, 22 August 2013 at 10:24:49 UTC, David wrote:why do u link phobos when compiler do this for you?Thanks for help. Correct answer was here: http://forum.dlang.org/post/mailman.1089.1350735488.5162.digitalmars-d puremagic.com $ dmd -L-lphobos2 -L-lcurl main.d As I can see by google, this is common issue. How can we document the compilation proses?What should I do to get curl support? OS is Linux Ubuntu 12.10.Install libcurl-dev http://packages.ubuntu.com/de/lucid/libcurl-dev Add "-L-lcurl" to your commandlinebtw in fact i've seen somewhere on site/wiki/forums instructions "how to build libcurl for D" or something.-- Jordi Sayol
Aug 22 2013