在 windows7 上使用 mingw32 编译 Qt 4.8.5:“没有这样的文件或目录”

Posted

技术标签:

【中文标题】在 windows7 上使用 mingw32 编译 Qt 4.8.5:“没有这样的文件或目录”【英文标题】:Compiling Qt 4.8.5 using mingw32 on windows7: "no such file or directory" 【发布时间】:2013-07-08 22:30:55 【问题描述】:

我正在尝试在 Windows 7 上使用 mingw32 编译器从源代码构建 qt-4.8.5(开源)。

“configure”工作正常,但编译(mingw32-make)失败,输出如下:

D:\development\qt-4.8.5-mingw>mingw32-make                                                                                      
cd src/tools/bootstrap/ && D:/development/MinGW/bin/mingw32-make.EXE -f Makefile                                                
mingw32-make.EXE[1]: Entering directory 'd:/development/qt-4.8.5-mingw/src/tools/bootstrap'                                     
D:/development/MinGW/bin/mingw32-make.EXE -f Makefile.Release                                                                   
mingw32-make.EXE[2]: Entering directory 'd:/development/qt-4.8.5-mingw/src/tools/bootstrap'                                     
g++ -c -pipe -fno-keep-inline-dllexport -O2 -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE     -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_GEOM_VARIANT -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_STL -DQT_NO_SYSTEMLOCALE -DQT_NO_TEXTSTREAM -DQT_NO_THREAD -DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE -DQT_NO_DEPRECATED -DQT_NODLL -I'../../../include' -I'../../../include/QtCore' -I'../../../include/QtXml' -I'../../3rdparty/zlib' -I'd:/development/MSVS2008EXP/VC/INCLUDE' -I'd:/development/Microsoft SDKs/Windows/v6.1/include' -I'd:/development/MSVS2008EXP/VC/lib/' -I'd:/development/MS_SDKs/Windows/v6.1/Lib' -I'd:/DXSDK/Lib/x86' -I'../../../mkspecs/win32-g++-4.6' -o tmp/obj/release_shared/qisciicodec.o ../../corelib/codecs/qisciicodec.cpp                                                                          
g++: error: CreateProcess: No such file or directory                                                                            
Makefile.Release:333: recipe for target 'tmp/obj/release_shared/qisciicodec.o' failed                                           
mingw32-make.EXE[2]: *** [tmp/obj/release_shared/qisciicodec.o] Error 1                                                         
mingw32-make.EXE[2]: Leaving directory 'd:/development/qt-4.8.5-mingw/src/tools/bootstrap'                                      
Makefile:34: recipe for target 'release' failed                                                                                 
mingw32-make.EXE[1]: *** [release] Error 2                                                                                      
mingw32-make.EXE[1]: Leaving directory 'd:/development/qt-4.8.5-mingw/src/tools/bootstrap'                                      
Makefile:68: recipe for target 'sub-tools-bootstrap-make_default-ordered' failed                                                
mingw32-make.EXE: *** [sub-tools-bootstrap-make_default-ordered] Error 2                                                        

即:

g++: error: CreateProcess: No such file or directory                                                                            

因为 g++ 不打印它找不到的文件,所以我不确定是什么原因造成的。 我可以从命令行调用 g++、gcc 和 mingw32-make,它们位于 Path 中。 我已经删除了 VC 目录、MS SDK 目录,这也不能解决问题。 这是一个干净的“安装”,我提取了 tar.gz 的内容,并在不修改任何内容的情况下运行 configure。通过 -I 开关添加 mingw 包含路径来配置并不能解决问题。

我该如何解决这个问题?

其他信息: g++ 版本:4.7.1 mingw32-make 版本:3.82.90

【问题讨论】:

【参考方案1】:

想通了。 (嗯,我仍然不知道是什么原因造成的,但我知道如何让它工作)。

解决方案:

    将 qt.conf 放入 qt "bin" 目录。

    [Paths]
    Prefix = d:/development/qt-4.8.5-mingw 
    

    前缀是您的 qt 安装路径(注意正斜杠)。

    使用bat文件配置和编译:

      配置:

      set QTDIR=D:\development\qt-4.8.5-mingw
      set QMAKESPEC=win32-g++
      set PATH=D:\development\MinGW\bin;D:\development\tools\Perl32\bin;D:\development\qt-4.8.5-mingw\bin 
      set PATH=%PATH%;c:\Windows\system32
      set INCLUDE=
      set LIB=
      set CPATH=
      set CPLUS_INCLUDE_PATH=
      set LANG=en
      
      
      configure -opensource -openssl
      

      你应该把路径放入32位perl的bin目录,mingw32安装的bin目录,qt安装的bin目录。 -openssl 键是可选的(我需要这个)。

      编译:

      set QTDIR=D:\development\qt-4.8.5-mingw
      set QMAKESPEC=win32-g++
      set PATH=D:\development\MinGW\bin;D:\development\tools\Perl32\bin;D:\development\qt-4.8.5-mingw\bin 
      set PATH=%PATH%;c:\Windows\system32
      set INCLUDE=
      set LIB=
      set CPATH=
      set CPLUS_INCLUDE_PATH=
      set LANG=en
      
      
      mingw32-make
      

【讨论】:

以上是关于在 windows7 上使用 mingw32 编译 Qt 4.8.5:“没有这样的文件或目录”的主要内容,如果未能解决你的问题,请参考以下文章

在 Win7 上无法使用 MinGW 编译 RIES

使用 PostgreSQL 编译静态 Qt 5.10.0 时出错

windows上如何卸载C语言编译器MinGW?

如何在 Windows 的命令行中使用 MinGW 编译器?

如何使用 mingw 编译 cryptopp 5.6.2

在Linux下使用MinGW静态交叉编译带有zlib的libcurl(包括交叉编译openssl,即--cross-compile-prefix=i686-w64-mingw32- mingw)(代码