10

我已经通过 apt-get 在最新的 ubuntu 上安装了 curl,并且效果很好,但是我一直在阅读有关 DNS 查找的阻塞性质的信息,并发现它降低了我的应用程序的速度。

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

我将这个问题发布到 AskUbuntu,但被告知这里可能更好..

4

3 回答 3

8

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

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

这将下载curl带有 Debian/Ubuntu 构建文件和补丁的源代码。

编辑文件debian/control:添加行libc-ares-devBuild-Depends

编辑文件debian/rules:删除--enable-threaded-resolver并添加--enable-aresCONFIGURE_ARGS

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

现在运行命令

dpkg-buildpackage -us -uc -b -j4

它会在编译时间过长后生成几个 .deb 文件,在编译时去喝咖啡什么的。

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

cd ..
sudo dpkg -i curl_*.deb libcurl3-*.deb libcurl4-openssl-dev*.deb
于 2017-02-01T18:05:50.343 回答
6

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

通常,您会下载源代码并查找名为 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

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

这是cURL 项目主页上的一个页面,它会告诉你这些步骤

于 2013-01-22T19:10:53.397 回答
0

您需要单独安装 ares。你可以在这里下载。下载后,构建 c-ares(当前工作目录为“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

按照此

现在构建了 ares,您可以使用 ares 构建 libcurl。我在引用 ares 时遇到了问题,所以我不得不将 ares 源直接复制到 libcurl 中。为此,将“make install”创建的“include”目录从配置 ares 重命名为“ares”。然后,将此目录复制到 libcurl 的根目录。您现在可以使用 ares 选项构建 libcurl(当前工作目录是 libcurl):

cd /path/to/libcurl
./configure --enable-ares

完整示例:

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

编辑(2015 年 6 月 30 日):

要知道,如果您要交叉编译 libcurl,则需要使用相同的交叉编译器设置(--host 选项)交叉编译 c-ares。

希望这可以帮助!

于 2015-06-25T19:01:47.630 回答