我已经通过 apt-get 在最新的 ubuntu 上安装了 curl,并且效果很好,但是我一直在阅读有关 DNS 查找的阻塞性质的信息,并发现它降低了我的应用程序的速度。
我已经完成了 apt-get install libc-ares2 但我不确定如何告诉 curl 在查找时使用该库。
我将这个问题发布到 AskUbuntu,但被告知这里可能更好..
如果您想要可安装.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-dev
到Build-Depends
编辑文件debian/rules
:删除--enable-threaded-resolver
并添加--enable-ares
到CONFIGURE_ARGS
可选:在 的第一行增加版本号debian/changelog
,例如7.38.0-4+deb8u5
,7.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
我认为 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 项目主页上的一个页面,它会告诉你这些步骤
您需要单独安装 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。
希望这可以帮助!