Windows7系统安装FMM时CMake、make、make install步骤报错求助
问题阶段1:CMake检测C++编译器失败报错
报错原因
该错误是Cygwin环境调用原生MinGW编译器导致的路径解析冲突:Cygwin的虚拟路径(如/cygdrive/e/)无法被原生MinGW的c++.exe识别,找不到测试用的cxx文件,因此报输入文件不存在的错误。
解决方案
- 完全卸载Cygwin环境,直接使用MSYS2 + MinGW64工具链,将MSYS2的
mingw64/bin路径添加到系统环境变量PATH的最顶部,避免调用到其他版本的gcc/g++ - 编译前清空之前生成的build目录下所有缓存文件,重新执行
cmake .. -G "MinGW Makefiles",指定生成器为MinGW的Makefile,不要使用Cygwin默认的Unix Makefile
问题阶段2:make编译阶段LONG_BIT错误、direct.h缺失报错
报错原因
两个错误都属于编译环境和Python依赖的架构不匹配、头文件搜索路径冲突导致的:
LONG_BIT报错是因为所用编译器的架构和Anaconda的Python架构不一致,或是GDAL头文件为Cygwin版本,和MinGW工具链不兼容direct.h是Windows原生头文件,Cygwin环境下的GDAL默认没有适配该头文件,因此调用时会找不到
解决方案
- 完全卸载Cygwin相关的GDAL、cmake依赖,改用MSYS2的mingw64源安装所有依赖:执行
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-make mingw-w64-x86_64-gdal mingw-w64-x86_64-boost mingw-w64-x86_64-swig - 配置环境变量,确保cmake调用的是MSYS2安装的mingw64版本的cmake,而非系统其他位置的cmake
- 编译Python绑定时,指定Anaconda的64位Python路径:执行cmake时添加参数
-DPYTHON_EXECUTABLE=E:/anaconda/python.exe -DPYTHON_INCLUDE_DIR=E:/anaconda/include -DPYTHON_LIBRARY=E:/anaconda/libs/python3x.lib(将python3x.lib替换为实际安装的Python版本对应的库文件,例如Python3.8对应python38.lib) - 再次清空build目录缓存,重新走
cmake→mingw32-make→mingw32-make install流程,注意MSYS2 MinGW64环境下对应的编译命令是mingw32-make,不要使用make命令
内容的提问来源于stack exchange,提问作者hch
相关产品推荐
相关产品推荐

