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

Windows下GCC链接器找不到-lcheck与-lsubunit的解决方法咨询

问题描述

在Windows 11系统下编译依赖check.h的C代码,执行编译命令:

gcc new_test.c s21_decimal.a -lcheck -lm -lpthread -lsubunit -o new_test

出现链接阶段错误:

/usr/lib/gcc/x86_64-pc-msys/11.3.0/../../../../x86_64-pc-msys/bin/ld: cannot find -lcheck: No such file or directory
/usr/lib/gcc/x86_64-pc-msys/11.3.0/../../../../x86_64-pc-msys/bin/ld: cannot find -lsubunit: No such file or directory
collect2: error: ld returned 1 exit status

当前GCC版本为gcc (GCC) 11.3.0,头文件check.h可正常识别,但链接器找不到check和subunit库文件。


解决方法

最简便的方案:通过MSYS包管理器安装

从报错路径能看出你使用的是MSYS环境,直接用包管理器安装缺失的库是最高效的:

  • 打开MSYS终端,执行以下命令安装check库(会自动安装依赖的subunit库):
pacman -S check

安装完成后重新执行原编译命令即可。

手动配置方案(包管理器安装失败时使用)

可以手动获取MSYS兼容的库文件(注意:不是Windows原生的.lib,而是MSYS环境使用的.a静态库或.dll动态库),步骤如下:

  1. 获取库文件
    • 从MSYS2软件源下载check-devel和subunit-devel对应的包,解压后提取出libcheck.a、libsubunit.a等库文件。
  2. 放置库文件
    • 方式一:将库文件复制到MSYS系统库目录,比如/usr/lib/(与报错路径中的库目录对应);
    • 方式二:将库文件放在项目自定义目录,比如项目根目录下的libs文件夹。
  3. 调整编译命令
    • 若用方式一,直接重新执行原编译命令即可;
    • 若用方式二,需通过-L参数指定自定义库路径,示例命令:
      gcc new_test.c s21_decimal.a -L./libs -lcheck -lm -lpthread -lsubunit -o new_test
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:26:01