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

Ubuntu 20.04下使用mingw编译FLTK项目出现Undefined Reference错误

交叉编译FLTK生成Windows程序报错解决方案

核心问题原因

原生g++编译正常是因为你链接的是适配Linux x86_64架构的FLTK库,而MinGW交叉编译Windows程序时,你当前fltk-1.3.7/lib目录下的库是Linux平台架构的编译产物,无法被MinGW识别,同时你链接了X11等Linux专属图形库,两者共同导致了未定义引用错误。
额外提示:你原命令中的交叉编译工具名少了开头的x,正确的工具名是x86_64-w64-mingw32-g++

具体操作步骤

  • 首先安装MinGW相关依赖工具:
sudo apt install mingw-w64-tools mingw-w64-x86-64-dev
  • 重新针对Windows x86_64架构交叉编译FLTK库,避免覆盖原有Linux版FLTK:
# 进入FLTK源码目录
cd fltk-1.3.7
# 配置交叉编译参数,指定独立安装路径
./configure --host=x86_64-w64-mingw32 --prefix=/opt/fltk-mingw64 --enable-static --disable-shared
# 编译安装
make -j$(nproc)
sudo make install
  • 修改编译命令,替换为MinGW版FLTK的路径,移除Linux专属链接参数:

MinGW编译Windows程序不需要链接X11、Xfixes、Xext等Linux图形库,需补充Windows系统库链接参数

x86_64-w64-mingw32-g++ helloworld.cpp -I/usr/include/eigen3 -I/opt/fltk-mingw64/include -L/opt/fltk-mingw64/lib -lfltk_images -lfltk -lole32 -luuid -lcomctl32 -ldl -o Decision_Master.exe

可选优化方案

可以直接调用交叉编译后的FLTK自带的配置工具自动生成编译参数,减少手动拼写错误:

x86_64-w64-mingw32-g++ helloworld.cpp -I/usr/include/eigen3 `/opt/fltk-mingw64/bin/fltk-config --cxxflags --ldflags --use-images` -o Decision_Master.exe

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:45:03