
如何从源码编译安装 jqautoreconf、--with-onigurumabuiltin 与 make check【免费下载链接】jqCommand-line JSON processor项目地址: https://gitcode.com/GitHub_Trending/jq/jq当系统包管理器里的 jq 版本过旧或者你需要在自有环境里控制构建选项例如自带 oniguruma 正则库时就需要从源码编译安装 jq。jq 是一个用可移植 C 语言编写的命令行 JSON 处理器零运行时依赖。本文覆盖的完整路径是准备构建工具 →autoreconf -i重新生成构建脚本 → 用./configure --with-onigurumabuiltin配置 →make编译 →make check跑完测试套件 →make install安装。全部依据来自仓库自带的 README.md、configure.ac 和 Makefile.am。准备构建依赖README.md 列出的源码构建依赖是libtoolmakeautomakeautoconf先确认这四个工具都已安装缺哪个就先装哪个README 没有指定具体发行版的安装命令按你的系统包管理器自行处理。另外要区分两种源码获取方式这决定了后续步骤从 git 仓库构建需要执行git submodule update --init拉取 oniguruma 子模块并执行autoreconf -i重新生成 configure 脚本从 release 发布的 tarball 构建跳过autoreconf步骤README 明确说明此时也不需要 flex 或 bison。还有一组可选的文档依赖重新构建 jq manpage 需要python3和pipenv在docs/目录下运行pipenv sync安装依赖之后再运行./configure --enable-docs见 docs/README.md。如果这些依赖缺失configure 只打印一条警告Python dependencies for building jq documentation not foundjq 本身仍然可以构建、安装只是 manpage 不会重新生成、基于 manpage 的新测试不会运行。不关心 manpage 重建的读者可以忽略这一节。配置构建--with-onigurumabuiltin 的作用--with-oniguruma选项在 configure.ac 中定义行为如下不传该选项时默认值为yesconfigure 会先查找系统已安装的 onigurumaoniguruma.h头文件和onig_version符号。如果没找到会打印Oniguruma was not found. Will use the packaged oniguruma.并自动回退到随源码打包的 oniguruma传入一个安装前缀路径表示 oniguruma 装在非标准位置configure 会去${前缀}/include和${前缀}/lib查找传入builtin表示直接构建仓库内vendor/oniguruma目录中的打包 onigurumaconfigure.ac。在不想依赖系统 oniguruma、也不确定它装在哪里的情况下README 给出的推荐配置命令是./configure --with-onigurumabuiltin一个值得知道的连带影响当构建启用了 oniguruma 时make check会额外加入tests/onigtest和tests/manonigtest两个测试见 Makefile.am即用 oniguruma 编写的正则相关功能也会被覆盖到。编译、测试与安装以下命令序列来自 README.md 的 Building from source 一节在 jq 源码根目录依次执行git submodule update --init # if building from git to get oniguruma autoreconf -i # if building from git ./configure --with-onigurumabuiltin make clean # if upgrading from a version previously built from source make -j8 make check sudo make install逐条说明适用条件git submodule update --init和autoreconf -i只用于从 git 源码构建tarball 构建跳过这两步make clean只在从旧版本源码构建升级时才需要make -j8按 8 个并行任务编译可按机器核数调整-j数值sudo make install需要 root 权限会把构建产物写入系统目录——按 Makefile.am 的安装目标包括jq可执行文件、libjq库、manpagejq.1和 pkgconfig 文件libjq.pc。执行前确认你对系统目录有写入权限且接受覆盖已有安装。可选分支README 同时给出静态链接构建方式用于产出不依赖动态库的二进制make LDFLAGS-all-static验证构建结果make check 测试套件make check是 README 构建流程中的正式验证步骤。Makefile.am 定义了它实际运行的测试基础集合tests/mantest、tests/jqtest、tests/shtest、tests/utf8test、tests/base64test、tests/uritest非 Windows 平台追加tests/optionaltest启用 oniguruma 时追加tests/onigtest、tests/manonigtest。这些测试脚本通过环境变量JQ$(abs_builddir)/jq指向本次编译出来的二进制而不是系统里已有的 jq所以make check验证的正是你刚构建的版本。以 tests/jqtest 为例它对编译产物执行的核心命令是$JQ -L tests/modules --run-tests tests/jq.test也就是说--run-tests是 jq 自带的自检模式。编译完成后你也可以手动对根目录生成的./jq跑一次这个命令做抽查。make check中每个测试条目都通过、整体正常结束即可认为构建通过再执行sudo make install。如果需要在测试中启用 Valgrind 检查内存问题configure 提供--enable-valgrind选项configure.ac 中的注释提示这会让测试明显变慢适合先让测试直接通过后再启用。限制与边界用 release tarball 构建时autoreconf不需要flex/bison 也不需要缺少 python/pipenv 文档依赖时不会阻塞构建和安装只影响 manpage 重建且 configure 会以警告形式告知静态链接构建make LDFLAGS-all-static与常规动态构建是不同的构建目标不要在同一次安装流程里混用。安装完成后README 中的使用示例展示了 jq 的基本用法形态例如从package.json提取字段jq .version package.json命令能否正常输出目标字段是对已安装二进制最直接的一次使用验证。【免费下载链接】jqCommand-line JSON processor项目地址: https://gitcode.com/GitHub_Trending/jq/jq创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考