FLTK在Windows上抱怨GCC

5

我尝试了很多不同的方法,几乎花费了一个月的时间在Windows系统上构建fltk,但总是遇到以下问题:

configure: error: C compiler cannot create executable (msys fltk/configure)

或者

Check for working C compiler: C:/MinGW/bin/gcc.exe -- broken (CMake-gui)

我尝试了使用fltk 1.3.01.3.3,甚至尝试了三个不同的MinGW发行版,GCC版本分别是:5.1.04.9.23.4.5。然而它总是编译失败。这里是由./configure文件生成的一些错误日志:

$ ./configure --prefix=C:/libs/fltk-1.3.3
-----------
核心测试。
-----------
configure:1336: 检查构建系统类型 configure:1354: 结果: i686-pc-mingw32 configure:1362: 检查主机系统类型 configure:1376: 结果: i686-pc-mingw32 configure:1439: 查找 gcc configure:1455: 找到 /c/mingw32/bin/gcc configure:1465: 结果: gcc configure:1709: 检查 C 编译器版本 configure:1712: gcc --version &5 gcc.exe (i686-win32-dwarf-rev2, MinGW-W64 项目构建) 版权所有 (C) 2014 自由软件基金会。 这是自由软件; 请查看拷贝条件的源代码。 没有任何保证; 甚至没有适合特定目的的保证。
configure:1715: $? = 0 configure:1717: gcc -v &5 使用内置规范。COLLECT_GCC=c:\mingw32\bin\gcc.exe COLLECT_LTO_WRAPPER=c:/mingw32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe 目标:i686-w64-mingw32 配置为: ../../../src/gcc-4.9.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw492/i686-492-win32-dwarf-rt_v4-rev2/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw492/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-win32-dwarf-rev2, MinGW-W64 项目构建' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v4-rev2/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v4-rev2/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw492/i686-492-win32-dwarf-rt_v4-rev2/mingw32/opt/lib -L/c/mingw492/prerequisites/i686-zlib-static/lib -L/c/mingw492/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware' 线程
我之前使用同样的工具编译了另外两个GUI库(nana和SFML),所以gcc编译器应该没有问题。
编辑:
某些东西(很可能是cygwin)一直在破坏我的mingw gcc程序,每次它“被破坏”时我都会看到黑色的vcc1.exe窗口。然后我必须替换mingw文件夹才能让它再次正常运行,这种情况通常发生在我打开netbeans时。我不知道如何解决这个问题,所以我一直避免使用cygwin和netbeans。

我看到你那里有相当多的MinGW目录:C:/MinGW,C:/mingw32和C:/mingw492。也许配置文件混淆了,找不到C/C++编译器? - DejanLekic
我最初使用MinGW进行一般的C++编译,然后我不得不使用mingw32来构建SFML,最后我又不得不使用另一个mingw发行版来编译nana库(我将其命名为mingw-nana)。我绝对没有一个名为mingw492的目录。如果这是问题所在,是否有一种指定gcc编译器的方法?~~~~~~~编辑:第19行似乎已经选择了一个gcc,因此情况并非如此。 - ducklin5
你可以再试一次运行CMake,并向我们展示CMakeFiles/CMakeError.logCMakeFiles/CMakeOutput.log文件的内容吗? - kirbyfan64sos
另外,当出现损坏的 vcc1.exe 时,重新启动计算机是否可以解决问题? - kirbyfan64sos
不,我不这么认为。这也使得构建任何东西变得非常困难。我相信我有病毒,因为除此之外,在cygwin64/bin/目录中,一些可执行文件开始有一个隐藏的v<filename>.exe版本。我现在正在重新安装cygwin和tmd-gcc。 - ducklin5
不,它不是这样的。 - ducklin5
2个回答

0
我昨天终于成功构建了它,使用的是TDM-GCC的这个版本(根据GUI安装程序):
  • MinGW-w64/TDM64 (32位和64位) ==> TDM-GCC

我使用cmake GUI而非.configure文件:
1. 打开cmake GUI。
2. 输入源代码文件夹(即fltk文件夹的根目录,例如:"C:/libs/fltk-1.3.3")。
3. 输入构建文件夹, 例如:"C:/libs/fltk-1.3.3/build/"。
4. 点击配置。
5. ** 可以更改一些选项,但我没有更改。
6. 点击生成。
7. 在cmd(我用的是git bash)中:cd到构建目录并运行make或mingw32-make。

我彻底卸载了cygwin,因为它干扰了工具链构建,即mingw和tdm-gcc(仍然不确定为什么会发生这种情况)。


0

设置开发环境的更简便方式是使用MSYS2

  • 下载并安装
  • 运行MSYS2 Shell
  • 安装一些开发工具和FLTK:pacman -S make automake autoconf libtool mingw-w64-i686-gcc mingw-w64-i686-fltk
  • 运行Mingw64 Shell,您就可以轻松编译源代码:g++ -o myproject myproject.cpp -lfltk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接