支持HTTP/3的curl编译踩坑
Linux下编译curl开启http3
日期:2021年1月29日
系统版本:Windows的Linux子系统,Ubuntu20.10
原网址:HTTP/3 with curl
实现方式:openssl + nghttp3 + ngtcp2 + curl
依赖
libtool
autoconf
pkg-config
其他基本编译工具,gcc等等
实测需要的更改
- 编译curl时需要加入PKG_CONFIG_PATH环境变量,指定nghttp3的pkgconfig文件夹位置,它在$(nghttp3安装位置)/lib/pkgconfig
- make install完成之后运行curl,发现程序是新的,但是libcurl是旧的,直接运行无法使用http3。这是因为make install吧libcurl的库装在了/usr/local/lib,而实际上curl编译的默认加载共享库路径是/usr/lib/x86_64-linux-gnu,也就是加载到了系统原本的库。
- 针对上述问题,简单粗暴的办法是把/usr/local/lib下的libcurl库直接扔到/usr/lib/x86_64-linux-gnu下,实测可以运行。另一方面,可能可以在curl的configure命令的LDFLAGS选项中加入/usr/local/bin,指定curl程序的共享库加载路径,该方法尚未尝试。
其他
- 另外,编译安装的curl不仅需要libcurl的共享库,还需要openssl的共享库,删除后curl无法正常运行