Ubuntu 24.04自动化安装vcpkg遇metrics.cpp崩溃问题求助
解决vcpkg在Ubuntu 24.04自动化部署时的"unreachable code was reached"崩溃问题
在重复部署Ubuntu 24.04系统的自动化配置流程中,vcpkg bootstrap阶段反复出现崩溃,错误信息如下:
Downloading vcpkg-glibc... vcpkg package management program version 2025-06-20-ef7c0d541124bbdd334a03467e7edb6c3364d199 See LICENSE.txt for license information. [91m/source/src/vcpkg/metrics.cpp(176): unreachable code was reached [0mAborted (core dumped)
相关自动化脚本片段:
if [[ ! -f "${USER_HOME}/.l.done" ]]; then log "[4/7] Cloning and bootstrapping vcpkg" cd "${USER_HOME}" rm -rf "$VCPKG_DIR" git clone https://github.com/microsoft/vcpkg "$VCPKG_DIR" cd "$VCPKG_DIR" # Disable metrics properly export VCPKG_METRICS_OPT_OUT=1 ./bootstrap-vcpkg.sh --disableMetrics log "vcpkg ready at $VCPKG_DIR/vcpkg" touch "${USER_HOME}/.l.done" else log "[4/7] skipped" fi
解决步骤
强制从源码编译vcpkg:Ubuntu 24.04自带的glibc 2.39和vcpkg预编译的二进制包存在兼容性问题,bootstrap时加上
--no-download参数,避免下载预编译的glibc适配包,直接从源码编译:
修改bootstrap命令为:./bootstrap-vcpkg.sh --disableMetrics --no-download提前设置metrics禁用变量:把
export VCPKG_METRICS_OPT_OUT=1移到git clone之前,确保整个vcpkg初始化过程都能读取到该变量,避免metrics模块初始化时的逻辑冲突:export VCPKG_METRICS_OPT_OUT=1 git clone https://github.com/microsoft/vcpkg "$VCPKG_DIR"清理残留缓存:每次部署前清理vcpkg的缓存目录,避免旧的预编译文件干扰:
在rm -rf "$VCPKG_DIR"后加上:rm -rf "${USER_HOME}/.cache/vcpkg"
修改后的完整脚本片段
if [[ ! -f "${USER_HOME}/.l.done" ]]; then log "[4/7] Cloning and bootstrapping vcpkg" cd "${USER_HOME}" rm -rf "$VCPKG_DIR" rm -rf "${USER_HOME}/.cache/vcpkg" # Disable metrics before cloning to ensure full coverage export VCPKG_METRICS_OPT_OUT=1 git clone https://github.com/microsoft/vcpkg "$VCPKG_DIR" cd "$VCPKG_DIR" ./bootstrap-vcpkg.sh --disableMetrics --no-download log "vcpkg ready at $VCPKG_DIR/vcpkg" touch "${USER_HOME}/.l.done" else log "[4/7] skipped" fi
内容的提问来源于stack exchange,提问作者Anthony Persson
相关产品推荐
相关产品推荐

