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
相关产品推荐
相关产品推荐

