You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github Actions中Qt5依赖缺失问题求助

解决Github Actions中Qt5编译时ICU库未找到的问题

问题原因

Qt 5.15.2依赖ICU 56版本,但当前使用的GitHub Actions Linux runner(如ubuntu-latest对应Ubuntu 22.04+)的系统源中不再提供该旧版本ICU库。虽然install-deps=true参数会尝试安装系统依赖,但无法处理源中不存在的包,最终导致链接阶段出现ICU函数未定义引用错误。

解决方案

方案一:切换到兼容的Ubuntu runner版本

Ubuntu 18.04的系统源中包含libicu56,只需将runner切换至该版本,install-deps=true即可自动安装所需依赖:

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-18.04, windows-latest, macos-latest]
        # 保留你的其他matrix配置(编译工具、构建类型等)

方案二:在新版Ubuntu runner手动安装ICU 56

若不想切换runner版本,可通过手动下载deb包安装ICU 56:
在Install Qt步骤前添加以下步骤:

- name: Install ICU 56 for Ubuntu 20.04+
  if: runner.os == 'Linux'
  run: |
    wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu56_56.1-6ubuntu0.4_amd64.deb
    sudo dpkg -i libicu56_56.1-6ubuntu0.4_amd64.deb
    sudo apt-get install -f -y

方案三:配置CMake的RPATH确保链接器路径正确

通过CMake参数设置运行时库路径(RPATH),同时临时添加Qt库路径到LD_LIBRARY_PATH,帮助链接器找到依赖:
修改Configure CMake步骤:

- name: Configure CMake
  env:
    CMAKE_PREFIX_PATH: ${{env.Qt5_DIR}}
    LD_LIBRARY_PATH: ${{env.Qt5_DIR}}/lib:$LD_LIBRARY_PATH
  run: >
    cmake -B ${{ steps.strings.outputs.build-output-dir }}
    -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
    -DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
    -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
    -DCMAKE_INSTALL_RPATH=${{env.Qt5_DIR}}/lib
    -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
    -S ${{ github.workspace }}

内容的提问来源于stack exchange,提问作者dde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:33:19