【问题标题】:QWT library installation problem on WindowsWindows上的QWT库安装问题
【发布时间】:2020-12-10 05:58:27
【问题描述】:

我在 Windows 10 上安装了 qt creator 和 mingw。一切正常,但我无法编译 qwt 库 (https://qwt.sourceforge.io/)。 Qt和编译器安装在磁盘F:/ QT上。

Start->Qt->mingw console

F:\qwt-6.1.5>qmake qwt.pro
Info: creating stash file F:\qwt-6.1.5\.qmake.stash

F:\qwt-6.1.5>mingw32-make
cd src/ && ( test -e Makefile || F:/Qt/5.15.0/mingw81_64/bin/qmake.exe -o Makefile F:/qwt-6.1.5/src/src.pro ) && mingw32-make -f Makefile
      0 [main] sh 8736 sync_with_child: child 9992(0x1D8) died before initialization with status code 0xC0000142
    179 [main] sh 8736 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh: fork: Resource temporarily unavailable
mingw32-make: *** [Makefile:53: sub-src-make_first-ordered] Error 128
F:\Qt\5.15.0\mingw81_32>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=F:/Qt/Tools/mingw810_32/bin/../libexec/gcc/i686-w64-mingw32/8.1.0/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../../../src/gcc-8.1.0/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --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-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/mingw810/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw810/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw810/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw810/prerequisites/i686-w64-mingw32-static --with-pkgversion='i686-posix-dwarf-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32/opt/include -I/c/mingw810/prerequisites/i686-zlib-static/include -I/c/mingw810/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32/opt/include -I/c/mingw810/prerequisites/i686-zlib-static/include -I/c/mingw810/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32/opt/include -I/c/mingw810/prerequisites/i686-zlib-static/include -I/c/mingw810/prerequisites/i686-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32/opt/lib -L/c/mingw810/prerequisites/i686-zlib-static/lib -L/c/mingw810/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'
Thread model: posix
gcc version 8.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project)

如何解决?

【问题讨论】:

  • 我会尝试在命令行cd src/ && ( test -e Makefile || F:/Qt/5.15.0/mingw81_64/bin/qmake.exe -o Makefile F:/qwt-6.1.5/src/src.pro ) && mingw32-make -f Makefile 中单独运行不同的命令。查看哪一个失败(如果有的话)。 span>
  • mingw32-make -f Makefile.Release all mingw32-make[1]: Entering directory 'f:/qwt-6.1.5/src' compiling qwt_abstract_scale_draw.cpp 0 [main] sh 11536 sync_with_child: child 6160(0x1EC) died before initialization with status code 0xC0000142 221 [main] sh 11536 sync_with_child: *** child state waiting for longjmp /usr/bin/sh: fork: Resource temporarily unavailable mingw32-make[1]: *** [Makefile.Release:3550: release/qwt_abstract_scale_draw.o] Error 128 mingw32-make[1]: Leaving directory 'f:/qwt-6.1.5/src' mingw32-make: *** [Makefile:49: release-all] Error 2
  • 我添加了Windows环境变量(PATH):F:\Qt\5.15.0\mingw81_32\bin F:\Qt\5.15.0\mingw81_64\bin 好像路径有问题?
  • 一个建议(来自互联网)是由sh.exe 程序引起的,您的某个位置与 ming32-make 尝试运行的程序不同。所以是的,这是一个路径错误,您需要确保 mingw32 sh 命令是从您的路径中提取的命令。
  • 解决方案:mingw32-make SHELL=cmd,但编译后:compiling qwt_dial_needle.cpp compiling qwt_knob.cpp compiling qwt_slider.cpp compiling qwt_thermo.cpp compiling qwt_wheel.cpp generating moc/moc_predefs.h moc qwt_dyngrid_layout.h mingw32-make[1]: *** [Makefile.Release:651: moc/moc_qwt_dyngrid_layout.cpp] Error 1 mingw32-make[1]: Leaving directory 'f:/qwt-6.1.5/src' mingw32-make: *** [Makefile:49: release-all] Error 2我的微处理器编译器太多,可能PATH有问题。

标签: c++ qt makefile qmake qwt


【解决方案1】:

在 QT 5.15.0 中更改了某些目录,如果您想使用 qt 5.15.0 构建 qwt,您需要修改 qwt 源代码,我在文件 qwt_global.h 中添加了此代码,它适用于 MVCS 2019 和 qwt 6.1.4

#if defined(_WIN32)
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
#include <QtGui/QPainterPath>
#endif

另外,使用 qwt version >= 6.1.5 来解决这个问题

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2017-07-04
    • 2011-03-25
    • 2018-06-13
    相关资源
    最近更新 更多