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

MSYS2下Mingw链接freetype:找到符号却提示库不存在

MSYS2下FreeType链接错误的原因与解决

在MSYS2环境中编译程序时,若链接命令未添加FreeType相关库参数,会出现大量未定义符号错误,例如:

... undefined reference to `FT_Init_FreeType'
... undefined reference to `FT_New_Face'
... undefined reference to `FT_Set_Pixel_Sizes'

添加-lfreetype-6后,未定义符号错误消失,但出现链接器错误:

../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lfreetype-6: No such file or directory

已安装的FreeType库信息如下:

$ pacman -Ss freetype
mingw32/mingw-w64-i686-freetype 2.12.1-1
    TrueType font rendering library (mingw-w64)
mingw64/mingw-w64-x86_64-freetype 2.12.1-1 [installed]
    TrueType font rendering library (mingw-w64)
ucrt64/mingw-w64-ucrt-x86_64-freetype 2.12.1-1
    TrueType font rendering library (mingw-w64)
clang32/mingw-w64-clang-i686-freetype 2.12.1-1
    TrueType font rendering library (mingw-w64)
clang64/mingw-w64-clang-x86_64-freetype 2.12.1-1
    TrueType font rendering library (mingw-w64)

原因解析

GCC能解析这些符号是因为编译阶段已经包含了FreeType的头文件,头文件中声明了FT_Init_FreeType等函数,所以编译过程不会报错。但链接阶段需要找到承载这些函数的实际库文件,而你用的-lfreetype-6参数不符合MSYS2中库的命名规则:

  • MSYS2的mingw64环境下,FreeType的库文件名为libfreetype.a(静态库)或libfreetype.dll.a(动态库导入库)
  • GCC的-l参数会自动在库名前添加lib前缀,后缀追加.a或.dll.a,所以-lfreetype-6会让链接器寻找libfreetype-6.a或libfreetype-6.dll.a,但实际安装的库没有这个名称,因此报错找不到。

解决方法

将链接命令中的-lfreetype-6替换为-lfreetype即可正常链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:45:32