Jump to page: 1 2
Thread overview
How compile program with curl support?
Aug 22, 2013
ilya-stromberg
Aug 22, 2013
evilrat
Aug 22, 2013
Ivan Kazmenko
Aug 22, 2013
Ivan Kazmenko
Aug 22, 2013
evilrat
Aug 22, 2013
David
Aug 22, 2013
ilya-stromberg
Aug 22, 2013
evilrat
Aug 22, 2013
ilya-stromberg
Aug 22, 2013
evilrat
Aug 22, 2013
David
Aug 24, 2013
ilya-stromberg
Aug 24, 2013
David
Aug 22, 2013
Gary Willoughby
Aug 22, 2013
Jordi Sayol
August 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.
August 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)
August 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.
August 22, 2013
On Thursday, 22 August 2013 at 10:00:20 UTC, Ivan Kazmenko wrote:
> and then I link
Sorry, 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).
August 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

August 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:
>> 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"

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.
August 22, 2013
On Thursday, 22 August 2013 at 10:24:49 UTC, David wrote:
>> 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

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?
August 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:
>>> 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
>
> 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?

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.
August 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?!
August 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:
>> 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?!

none really, especially on linux :(
« First   ‹ Prev
1 2