2003-08-05 18:52:31 +04:00
|
|
|
$Id$
|
|
|
|
_ _ ____ _
|
|
|
|
___| | | | _ \| |
|
|
|
|
/ __| | | | |_) | |
|
|
|
|
| (__| |_| | _ <| |___
|
|
|
|
\___|\___/|_| \_\_____|
|
|
|
|
|
2004-04-06 11:59:11 +04:00
|
|
|
How To Build libcurl to Use c-ares For Asynch Name Resolves
|
|
|
|
===========================================================
|
|
|
|
|
|
|
|
c-ares:
|
|
|
|
http://daniel.haxx.se/projects/c-ares/
|
2003-08-05 18:52:31 +04:00
|
|
|
|
2003-10-13 17:07:50 +04:00
|
|
|
NOTE
|
2004-04-06 11:59:11 +04:00
|
|
|
libcurl 7.11.1 builds with c-ares 1.1.0, but 7.11.2 and later require c-ares
|
|
|
|
1.2.0 or alter.
|
|
|
|
|
|
|
|
Once upon the time libcurl built fine with the "original" ares. That is no
|
|
|
|
longer true. You need to use c-ares. c-ares is based on ares but improved.
|
2003-08-05 18:52:31 +04:00
|
|
|
|
2004-04-06 11:59:11 +04:00
|
|
|
Build c-ares
|
|
|
|
============
|
2003-08-06 17:21:19 +04:00
|
|
|
|
2004-04-06 11:59:11 +04:00
|
|
|
1. unpack the c-ares archive
|
|
|
|
2. cd c-ares-dir
|
2003-10-13 17:07:50 +04:00
|
|
|
3. ./configure
|
|
|
|
4. make
|
2003-08-05 18:52:31 +04:00
|
|
|
|
2004-04-06 11:59:11 +04:00
|
|
|
Build libcurl to use c-ares in the curl source tree
|
|
|
|
===================================================
|
2003-08-05 18:52:31 +04:00
|
|
|
|
2004-04-06 11:59:11 +04:00
|
|
|
1. name the c-ares source directory 'ares' in the curl source directory
|
|
|
|
(if you have checked out the curl sources from CVS, you will already have
|
|
|
|
c-ares in a directory named ares).
|
2003-10-13 17:07:50 +04:00
|
|
|
2. ./configure --enable-ares
|
|
|
|
3. make
|
2003-08-05 18:52:31 +04:00
|
|
|
|
2004-04-06 11:59:11 +04:00
|
|
|
Build libcurl to use an installed c-ares
|
|
|
|
========================================
|
2003-12-10 17:16:56 +03:00
|
|
|
|
|
|
|
1. ./configure --enable-ares=/path/to/ares/install
|
|
|
|
2. make
|
|
|
|
|
2004-04-06 11:59:11 +04:00
|
|
|
c-ares and ipv6
|
|
|
|
===============
|
2003-12-10 17:16:56 +03:00
|
|
|
|
2003-10-13 17:07:50 +04:00
|
|
|
If the configure script enables IPv6 support you need to explicitly disable
|
2004-04-06 11:59:11 +04:00
|
|
|
that (--disable-ipv6) since c-ares isn't IPv6 compatible (yet).
|
2004-01-04 15:00:11 +03:00
|
|
|
|
2004-04-06 11:59:11 +04:00
|
|
|
c-ares on win32
|
|
|
|
===============
|
2004-01-04 15:00:11 +03:00
|
|
|
(description brought by Dominick Meglio)
|
|
|
|
|
2004-04-06 11:59:11 +04:00
|
|
|
First I compiled c-ares. I changed the default C runtime library to be the
|
2004-01-04 15:00:11 +03:00
|
|
|
single-threaded rather than the multi-threaded (this seems to be required to
|
|
|
|
prevent linking errors later on). Then I simply build the areslib project (the
|
|
|
|
other projects adig/ahost seem to fail under MSVC).
|
|
|
|
|
|
|
|
Next was libcurl. I opened lib/config-win32.h and I added a:
|
|
|
|
#define USE_ARES 1
|
|
|
|
|
|
|
|
Next thing I did was I added the path for the ares includes to the include
|
|
|
|
path, and the libares.lib to the libraries.
|
|
|
|
|
|
|
|
Lastly, I also changed libcurl to be single-threaded rather than
|
|
|
|
multi-threaded, again this was to prevent some duplicate symbol errors. I'm
|
|
|
|
not sure why I needed to change everything to single-threaded, but when I
|
|
|
|
didn't I got redefinition errors for several CRT functions (malloc, stricmp,
|
|
|
|
etc.)
|
|
|
|
|
|
|
|
I would have modified the MSVC++ project files, but I only have VC.NET and it
|
|
|
|
uses a different format than VC6.0 so I didn't want to go and change
|
|
|
|
everything and remove VC6.0 support from libcurl.
|