Ошибка cmake при использовании набора инструментов gcc mingw-w64-x86_64 под Windows 7: "эта программа была создана без поддержки плагинов"

У меня есть установка с набором инструментов gcc для Windows 7, MSYS2, Mingw-w64-x86_64, CMake, и я пытаюсь создать библиотеку nanomsg.

Вот что я получаю:

$ 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 - неработающая ошибка CMake на C:/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/ быстро"

C: /mingw64/bin/mingw32-make.exe -f
CMakeFiles \ cmTryCompileExec910276652.dir \ build.make
CMakeFiles / cmTryCompileExec910276652.dir / сборки

mingw32-make.exe 1: вход в каталог
'C:/msys64/ дома / Laurent / Dev / nanomsg-сборки / 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 \ главная \Laurent\Dev\nanomsg-сборки \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 удалить -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.exe 1: * [cmTryCompileExec910276652.exe] Ошибка 1

mingw32-make.exe 1: Выход из каталога
'C:/msys64/ дома / Laurent / Dev / nanomsg-сборки / 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://stackru.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)
  1. Это связано с опцией "--enable-plugin" (отсутствует в моем gcc)?
  2. Есть ли где-нибудь сборка инструментария, доступная с этим набором опций? Я искал его в репозиториях MSYS2, Mingw-w64, rubenvb, но его там нет. Или я сам его построю?
  3. Возможно, Nanomsg не нуждается в этом? Требуется ли это для автотеста, потому что это нужно для nanomsg? Или я могу предотвратить запуск этого автотеста? Или я могу установить что-то, чтобы избежать необходимости использовать параметр --enable-plugins?

1 ответ

Я думаю, что вы используете оболочку MSYS2 здесь, а не сам MSYS2. Если бы вы использовали новейшую версию MSYS2, вы бы использовали следующую версию ging mingw-w64 x86_64:

$ 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, который сейчас используется по умолчанию и поэтому не отображается в списке.

Чтобы создать nanomsg с MSYS2, установите https://master-dl.sourceforge.net/project/msys2/Base/x86_64/msys2-x86_64-20141003.exe, снимите флажок "Запустить оболочку MSYS2 сейчас" (вам нужна оболочка mingw-w64 вместо). Запустите оболочку mingw-w64 (Пуск->MSYS2 64Bit->MinGW-w64 Win64 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

Но если вы разработчик, мы будем благодарны за вклад PKGBUILD для nanomsg.

Другие вопросы по тегам