Linux系统中一般自带curl命令,大部分选项和参数基本能满足日常工作需要。对于一些新的功能就需要是用编译安装的版本。本文编译安装的目的主要是让 curl 支持 --dns-servers
,实现 DNS 解析。
Man Page:https://curl.haxx.se/docs/manpage.html
编译安装 OpenSSL
要保证安装后的 OpenSSL 能兼容 CentOS6 以上系统针对 https 协议内容的访问,需要依赖较高版本的 OpenSSL
1 | yum -y install perl perl-devel |
库文件配置
1 | echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf.d/openssl-1.0.2m.conf |
编译安装 c-ares
c-ares
是一个C语言的异步DNS解析库,可以很方便的和使用者的事件循环统一起来,实现DNS的非阻塞异步解析,libcurl
, libevent
, gevent
, nodejs
都在使用。curl 如果需要使用 --dns-servers
参数的话要在编译 curl 时对c-ares
进行支持
1 | wget https://c-ares.haxx.se/download/c-ares-1.12.0.tar.gz |
编译安装 curl-7.57.0
CURL 的官方安装文档:http://curl.haxx.se/docs/install.html
1 | wget https://curl.haxx.se/download/curl-7.57.0.tar.bz2 |
测试
1 | curl7 -I --dns-servers 8.8.8.8 www.baidu.com |
源码包的移植
编译好的包需要依赖很多库,为了解决移植后的库依赖的问题,我们可以在移植之前将所有依赖的库拷贝到程序的 lib目录下
使用 ldd
命令列出动态库依赖关系
1 | [root@Test ~]$ ldd /usr/local/curl-7.57.0/bin/curl |
拷贝相关的库到程序的lib目录
1 | cp /usr/local/openssl/lib/libssl.so.1.0.0 /usr/local/curl-7.57.0/lib/ |
创建可移植的压缩包
1 | cd /usr/local/ |
使用 scp
命令从本机移植到另外一台机器X,在 X 机器添加库搜索路径
1 | scp -P 22 curl-7.57.0.tar.bz2 XXX.XXX.XXX.XXX:/opt/ |
测试
1 | /curl7 -I --dns-servers 8.8.8.8 www.baidu.com |