ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

curl 从 git 仓库源码构建时为什么要先执行 autoreconf -fi?

curl 从 git 仓库源码构建时为什么要先执行 autoreconf -fi? curl 从 git 仓库源码构建时为什么要先执行 autoreconf -fi【免费下载链接】curlA command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features项目地址: https://gitcode.com/GitHub_Trending/cu/curl从 curl 的 git 仓库检出源码并打算用 autotools 在 Unix 环境构建时你会发现源码树根目录里没有configure脚本直接运行./configure无从谈起。官方文档因此把 git 检出的构建流程写成三步先执行autoreconf -fi再./configure最后make见 GIT-INFO.md。这篇文章解释这一步为什么不能省并给出从检出到验证的完整操作路径。为什么 git 检出后必须先执行 autoreconf -fi关键在于 git 仓库里保存的是 autotools 的源文件而不是生成物仓库根目录中可以看到configure.ac和Makefile.am但.gitignore把configure、Makefile.in、aclocal.m4、install-sh、missing、libtool、ltmain.sh等一律列为忽略项——这些文件都是构建系统生成后才出现的不进版本库。而正常的发布 tarball 解压后已包含生成好的configuredocs/INSTALL.md 给出的常规 Unix 安装流程直接就是./configure --with-openssl、make、make install三步。docs/testcurl.md 说明得很直接对 tarball 类源码目录运行测试时会跳过autoreconf阶段从而去掉对 automake、autoconf、libtool、GNU m4 的依赖。反过来说从 git 构建时正是因为要现场生成configure才需要这些 autotools 工具链。所以autoreconf -fi的作用就是根据仓库中的 autotools 源文件重新生成configure脚本及Makefile.in等构建文件。官方连打发布包的脚本都要求这样做scripts/maketgz 开头注明需要 git 检出且应先运行autoreconf -fi并先构建一次 curl。准备条件执行autoreconf -fi前系统上需要有 autotools 工具链。docs/DEPENDENCIES.md 列出的最低支持版本为GNU autoconf 2.59GNU automake 1.7GNU libtool 1.4.2GNU m4 1.4此外还注意两点docs/INSTALL.md 说明 autotools 与 CMake 两套构建方式中部分功能需要 Perl。./configure要求显式选择 TLS 后端除非用--without-ssl禁用 TLS。OpenSSL 装在与编译器/链接器默认一致的路径时写--with-openssl即可装在别处如/opt/OpenSSL时有 pkg-config 就设置PKG_CONFIG_PATH没有则写成./configure --with-openssl/opt/OpenSSL。curl 默认构建 libpslPublic Suffix List支持系统没有该库时可安装它或加--without-libpsl。执行步骤在 curl 的源码检出目录根下按顺序执行git clone https://gitcode.com/GitHub_Trending/cu/curl cd curl autoreconf -fi ./configure --with-openssl make./configure这一行按自己的 TLS 后端和安装位置调整。几个文档给出的常用调整只想装在自己的目录、不做 root./configure --prefix$HOME随后make install就不需要 root 权限。查看完整选项列表./configure --help。开发 curl 本身时GIT-INFO.md 给出的参考配置是./configure --disable-shared --enable-debug --enable-maintainer-mode。如果你走的是 CMake 构建路径docs/INSTALL-CMAKE.md则完全不需要autoreconfcmake .或cmake -B ../curl-build在独立目录配置之后用cmake --build构建即可。验证构建结果文档给出的验证路径如下make正常结束是最基本的成功条件可选运行make test执行测试套件docs/INSTALL.md 中明确标注为 optionalmake install完成安装该步骤可能需要 root安装后运行curl --version可查看版本及构建所支持的特性该命令在 docs/INSTALL-CMAKE.md 中被用作检查构建信息输出的示例。哪些情况下不需要这一步使用发布 tarball 或每日快照GIT-INFO.md 本身注明此文件只存在于 git 中从不包含在发布包中发布包已带生成好的构建文件docs/testcurl.md 也说明 tarball 类目录会跳过 autoreconf 阶段。使用 CMake 构建配置与构建流程中不涉及 autotools。同一源码树被多个构建/测试进程共享时docs/testcurl.md 指出多个进程同时对同一源码树运行 autoreconf 可能引发问题因此提供--nobuildconf选项跳过该步骤让同树的其他构建复用已生成的文件。回到开头的问题git 检出缺少生成好的configure及Makefile.inautoreconf -fi就是从仓库内的 autotools 源文件补齐它们的唯一入口做完这一步后续命令与从 tarball 构建完全一致。【免费下载链接】curlA command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features项目地址: https://gitcode.com/GitHub_Trending/cu/curl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表