Cygwin编译GetDP时g++报‘-municode’选项不识别错误求助
解决Cygwin编译GetDP时
-municode选项不识别的问题 问题根源
-municode是MinGW/MSYS2专属的编译选项,用于生成支持Unicode的Windows程序,但你使用的是Cygwin原生的x86_64-pc-cygwin工具链——这套工具链本身不支持该选项,因此报错是必然的。Cygwin和MinGW是两套独立的编译环境,各自有专属参数,不能混用。
两种解决办法
办法1:修改GetDP的编译配置,移除-municode
- 进入GetDP源码目录,找到编译配置文件(GetDP基于CMake构建,目标文件是
CMakeLists.txt)。 - 全局搜索
-municode字符串,找到添加该选项的代码行,直接删除或用#注释掉。 - 清理之前的构建残留:执行
rm -rf build(如果之前创建过build目录),然后重新执行编译流程:cmake ..+make。
办法2:切换到Cygwin内置的MinGW工具链编译
如果需要生成原生Windows Unicode程序,可以改用Cygwin提供的MinGW交叉编译工具:
- 打开Cygwin安装器(
setup-x86_64.exe),搜索并安装mingw64-x86_64-gcc、mingw64-x86_64-g++、mingw64-x86_64-gfortran这几个软件包。 - 编译时指定使用MinGW工具链,运行CMake时添加如下参数:
之后再执行cmake .. -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_Fortran_COMPILER=x86_64-w64-mingw32-gfortranmake即可完成编译。
额外提示
Cygwin工具链编译出的程序会依赖cygwin1.dll,而MinGW编译的是不依赖Cygwin库的原生Windows程序,你可以根据自身需求选择对应方案。
内容的提问来源于stack exchange,提问作者elia.scolaro
相关产品推荐
相关产品推荐

