首页 文章

在Windows 7下使用mingw-w64-x86_64 gcc工具链发生cmake错误:“此程序已构建,无需插件支持”

提问于
浏览
2

我有一个Windows 7,MSYS2Mingw-w64-x86_64 gcc toolchainCMake的设置,我正在尝试构建nanomsg library .

这是我获得的:

$ cmake --debug-trycompile -DCMAKE_TOOLCHAIN_FILE = .. / toolchain_i686-pc-mingw32.cmake -DCMAKE_INSTALL_PREFIX = / usr / x86_64-w64-mingw32 -G“MinGW Makefiles”../ nanomsg

debug trycompile on
  • C编译器标识是GNU 4.8.2 - 检查工作C编译器:C:/mingw64/bin/x86_64-w64-mingw32-gcc.exe - 检查工作C编译器:C:/ mingw64 / bin /x86_64-w64-mingw32-gcc.exe - C处的CMake错误:/cmake-win32-x86/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61(消息):C编译器“C:/ mingw64 /bin/x86_64-w64-mingw32-gcc.exe“无法编译简单的测试程序 . 它失败并显示以下输出:更改目录:C:/ msys64 / home / Laurent / Dev / nanomsg-build / CMakeFiles / CMakeTmp运行构建命令:C:/mingw64/bin/mingw32-make.exe“cmTryCompileExec910276652 / fast”C :/mingw64/bin/mingw32-make.exe -f CMakeFiles \ cmTryCompileExec910276652.dir \ build.make CMakeFiles / cmTryCompileExec910276652.dir / build mingw32-make.exe1:进入目录'C:/ msys64 / home / Laurent / Dev / nanomsg -build / CMakeFiles / CMakeTmp'C:\ cmake-win32-x86 \ bin \ cmake.exe -E cmake_progress_report C:\ msys64 \ home \ Laurent \ Dev \ nanomsg-build \ CMakeFiles \ CMakeTmp \ CMakeFiles 1构建C对象CMakeFiles / cmTryCompileExec910276652.dir / testCCompiler.c.obj C:\ mingw64 \ bin \ x86_64-w64-mingw32-gcc.exe -o CMakeFiles \ cmTryCompileExec910276652.dir \ testCCompiler.c.obj -c C:\ msys64 \ home \ Laurent \ Dev \ nanomsg-build \ CMakeFiles \ CMakeTmp \ testCCompiler.c链接C可执行文件cmTryCompileExec910276652.exe C:\ cmake-win32-x86 \ bin \ cmake.exe -E cmake_link_script CMakeFiles \ cmTryCompileExec910276652.dir \ link.txt --verbose = 1 C :\ cmake- win32-x86 \ bin \ cmake.exe -E remove -f CMakeFiles \ cmTryCompileExec910276652.dir / objects.a x86_64-w64-mingw32-gcc-ar cr CMakeFiles \ cmTryCompileExec910276652.dir / objects.a @CMakeFiles \ cmTryCompileExec910276652.dir \ objects1 .rsp抱歉 - 这个程序是在没有插件支持的情况下构建的.CMakeFiles \ cmTryCompileExec910276652.dir \ build.make:91:目标'cmTryCompileExec910276652.exe'的配方失败了mingw32-make.exe1:* [cmTryCompileExec910276652.exe]错误1 mingw32-make .exe1:离开目录'C:/ msys64 / home / Laurent / Dev / nanomsg-build / CMakeFiles / CMakeTmp'Makefile:116:目标'cmTryCompileExec910276652 / fast'的配方mingw32-make.exe失败:* [cmTryCompileExec910276652 / fast]错误2 CMake无法正确生成此项目 . 调用堆栈(最近一次调用):CMakeLists.txt:29(项目)

这是我的工具链文件:

$ cat ../toolchain_i686-pc-mingw32.cmake
# http://www.cmake.org/Wiki/CMake_Cross_Compiling#The_toolchain_file
# http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=8959
# http://stackoverflow.com/questions/19754316/cross-compiling-opencv-with-mingw-using-cmakein-linux-for-windows

# this one is important
SET(CMAKE_SYSTEM_NAME Windows)
#this one not so much
#SET(CMAKE_SYSTEM_VERSION 1)

# specify the cross compiler
SET(PREFIX x86_64-w64-mingw32)
SET(CMAKE_MAKE_PROGRAM mingw32-make)
SET(CMAKE_C_COMPILER   ${PREFIX}-gcc)
SET(CMAKE_CXX_COMPILER ${PREFIX}-g++)
SET(CMAKE_AR ${PREFIX}-gcc-ar)
SET(CMAKE_NM ${PREFIX}-gcc-nm)
SET(CMAKE_RC_COMPILER  windres)

# specify the cross linker
SET(CMAKE_RANLIB ${PREFIX}-gcc-ranlib)

# where is the target environment
SET(CMAKE_FIND_ROOT_PATH /opt/mingw64 /usr/${PREFIX})

# search for programs in the build host directories
#SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
#SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
#SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

看起来它无法在自动测试的基础上构建,因为工具链错过了插件支持 .

这是我的gcc版本和选项:

$ /opt/mingw64/bin/x86_64-w64-mingw32-gcc.exe -v
Using built-in specs.
COLLECT_GCC=C:\mingw64\bin\x86_64-w64-mingw32-gcc.exe
COLLECT_LTO_WRAPPER=C:/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/4.8.2/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-4.8.2/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw482/x86_64-482-posix-seh-rt_v3-rev3/mingw64 --with-gxx-include-dir=/mingw64/x86_64-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=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --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=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --with-cloog=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='x86_64-posix-seh-rev3, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw482/x86_64-482-posix-seh-rt_v3-rev3/mingw64/opt/include -I/c/mingw482/prerequisites/x86_64-zlib-static/include -I/c/mingw482/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw482/x86_64-482-posix-seh-rt_v3-rev3/mingw64/opt/include -I/c/mingw482/prerequisites/x86_64-zlib-static/include -I/c/mingw482/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw482/x86_64-482-posix-seh-rt_v3-rev3/mingw64/opt/lib -L/c/mingw482/prerequisites/x86_64-zlib-static/lib -L/c/mingw482/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: posix
gcc version 4.8.2 (x86_64-posix-seh-rev3, Built by MinGW-W64 project)
  • 是否与"--enable-plugin"选项相关(我的gcc中缺少)?

  • 这个选项集是否有可用的工具链构建?我在MSYS2,Mingw-w64,rubenvb存储库中查找它,但它不在那里 . 或者我自己建造它?

  • 可能nanomsg不需要吗?自动测试是否需要它,因为nanomsg需要它?或者我可以阻止此自动测试运行吗?或者我可以设置一些东西以避免需要"--enable-plugins"选项吗?

1 回答

  • 2

    我认为你在这里使用MSYS2 shell,而不是MSYS2本身 . 如果您使用的是最新的MSYS2,那么您将使用以下mingw-w64 x86_64 GCC:

    $ pacman -Ss mingw-w64-x86_64-gcc
    mingw64/mingw-w64-x86_64-gcc 4.9.1-6
    
    $ PATH=/mingw64/bin:$PATH gcc -v
    Configured with: ... --enable-lto ...
    

    --enable-lto暗示--enable-plugins现在是默认值,因此不会出现在列表中 .

    要使用MSYS2构建nanomsg,请安装https://master-dl.sourceforge.net/project/msys2/Base/x86_64/msys2-x86_64-20141003.exe,取消"Run MSYS2 shell now"(您需要使用mingw-w64 shell) . 运行mingw-w64 shell(开始 - > MSYS2 64Bit-> MinGW-w64 Win64 Shell) . 从那个shell中:

    $ pacman -S git make mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
    $ git clone https://github.com/nanomsg/nanomsg.git
    $ mkdir nanomsg-build
    $ cd nanomsg-build
    $ cmake --debug-trycompile -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 -G "MSYS Makefiles" ../nanomsg
    $ make install
    

    但如果你是开发人员,我们会很感激为nanomsg Build PKGBUILD的contribution

相关问题