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

Windows下用MSYS2编译链接Coin-HSL库遇编译错误求助

问题:Windows下编译Coin-HSL(2021.05.05版本)出现未定义符号链接错误

环境与操作流程

  • 系统:Windows,已在C:/msys64路径安装MSYS2
  • 已通过MSYS2安装gcc、gfortran、metis、openblas等依赖包
  • 使用院校提供的带./configure脚本的Coin-HSL 2021.05.05版本,执行预处理命令:
export PATH=/c/msys64/mingw64:$PATH
export PATH=/c/msys64/mingw64/bin:$PATH

wget https://karypis.github.io/glaros/files/sw/metis/metis-5.1.0.tar.gz
tar -xvf metis-5.1.0.tar.gz

cd coinhsl-2021.05.05

mv ../metis-5.1.0 .
  • 编译安装命令:
./configure --prefix="Install_Path"
make
make install

错误现象

configure执行正常,但make时触发大量未定义符号的链接错误,示例:

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot export ma27as_: symbol not defined 
  • 同类错误覆盖多个求解器模块,且Coin-HSL源码目录中找不到ma27as_相关符号定义
  • 同时出现metis_nodend_未定义的链接错误
  • 尝试将生成的libhsl.dll添加到系统PATH,问题未解决

排查与解决建议

  1. 调整Fortran编译符号规则
    旧版Coin-HSL的Fortran源码编译时,符号名的大小写、下划线后缀可能和当前gcc/gfortran版本的默认规则不匹配。可在configure时添加兼容编译选项:
./configure --prefix="Install_Path" FCFLAGS="-ffixed-form -ffixed-line-length-132 -fno-underscoring"

若仍有问题,可尝试替换为-fsecond-underscore选项,根据错误情况调整。

  1. 单独编译并指定Metis路径
    手动下载的Metis 5.1.0可能未被Coin-HSL的configure正确识别,建议先单独编译Metis:
cd metis-5.1.0
make config prefix=/path/to/metis-install
make install

再在Coin-HSL的configure中显式指定Metis路径:

./configure --prefix="Install_Path" --with-metis=/path/to/metis-install
  1. 确保MSYS2工具链一致性
    使用纯MinGW64终端(而非MSYS终端)进行编译,避免混合不同工具链。同时确认所有依赖包(gcc、gfortran、metis等)都是通过pacman安装的同一版本,不混用手动编译的库。

  2. 验证Coin-HSL源码完整性
    检查Coin-HSL目录下是否存在ma27等报错模块对应的.f/.f90源码文件,若缺失需重新获取完整的源码包。

  3. 降级gcc/gfortran版本
    当前使用的gcc 14.2.0版本较新,可能与旧版Coin-HSL兼容性不佳。可尝试安装gcc 12版本:

pacman -S mingw-w64-x86_64-gcc12 mingw-w64-x86_64-gfortran12

切换到旧版本工具链后重新编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:13:27