如何在启用ares的情况下安装curl

时间:2013-01-22 19:08:09

标签: ubuntu curl libcurl

我已经通过apt-get在最新的ubuntu上安装了curl并且工作正常,但是我一直在阅读有关DNS查找的阻塞性质,并发现它正在减慢我的应用程序。

我已经完成了apt-get install libc-ares2但是我不确定如何告诉curl在进行查找时使用该库。

我把这个问题发给了AskUbuntu,但被告知这里可能更好......

3 个答案:

答案 0 :(得分:7)

我认为AskUbuntu认为这是一个编程问题而不是配置问题。您使用apt-get命令获取的二进制文件未使用libc-ares2编译(作为外部库或链接库)。当您获取libc-ares2时,您的计算机可能会构建您想要的cURL版本from source,但现在真正的工作已经开始。

通常您会下载源代码并查找名为README或INSTALL的文件。它(希望)会谈论一个像./configure这样的行的步骤。从这里您可以指定编译时选项。 cURL的make文件也可以自动检测libc-ares2的存在并将其包含在其构建中。

然而,在没有INSTALL文件的情况下查看最新的源代码版本时,会有一个configure脚本。看看它有这条线的来源:

--enable-ares[=PATH]    Enable c-ares for DNS lookups

如果从源文件夹运行此命令:

./configure --enable-ares && make && sudo make install

然后你有机会获得你想要的卷曲构造。可能存在很多与其他缺失库或缺少make和GCC相关的错误消息。在这个答案中,这将更难解决。

Here is a page在cURL的项目主页上,通过这些步骤与您进行了对话

答案 1 :(得分:7)

如果您想要可安装的.deb包而不是将所有内容放到/usr/local,请执行以下操作:

sudo apt-get build-dep curl
sudo apt-get install libc-ares-dev build-essential
apt-get source curl
cd curl-*

这将使用Debian / Ubuntu构建文件和补丁下载curl个源。

修改文件debian/control:将行libc-ares-dev添加到Build-Depends

修改文件debian/rules:移除--enable-threaded-resolver并将--enable-ares添加到CONFIGURE_ARGS

可选:在debian/changelog的第一行增加版本号,例如7.38.0-4+deb8u57.38.0-4+deb8u6,这样在您安装系统更新时,您的包不会被覆盖。< / p>

现在运行命令

dpkg-buildpackage -us -uc -b -j4

在编译时间不合理的情况下会产生几个.deb文件,在编译时喝咖啡或其他东西。

您可以使用以下命令安装新的curl c-ares支持:

cd ..
sudo dpkg -i curl_*.deb libcurl3_*.deb libcurl4-openssl-dev*.deb

答案 2 :(得分:0)

You need to install ares separately. You can download it here. Once downloaded, build c-ares (where current working directory is "c-ares-${VERSION}"): cd /path/to/c-ares-${VERSION} ./configure --prefix=/destination/path/for/ares/install (NOTE: if you specify a destination directory, it must exist already! If you don't specify a prefix, content should be install at location /usr/local/include/) make make install following this Now that ares is built, you can build libcurl using ares. I had an issue referencing ares so I had to copy the ares source directly into libcurl. To do this, rename the 'include' directory created by 'make install' from configuring ares to 'ares'. Then, copy this directory to libcurl's root directory. You can now build libcurl with the ares option (where current working directory is libcurl): cd /path/to/libcurl ./configure --enable-ares Full example: cd /User/${USER}/c-ares-1.10.0 mkdir installation make clean ./configure --prefix=/User/${USER}/c-ares-1.10.0/installation make make install mv installation/include installation/ares cp installation/ares /User/${USER}/libcurl/ cd /User/${USER}/libcurl/ ./configure --enable-ares make make install EDIT (6/30/2015): Know that if you're cross-compiling libcurl, you need to cross-compile c-ares with the same cross-compiler settings (--host option). Hope this helps!