Как построить GMP в MSYS2? - PullRequest
       132

Как построить GMP в MSYS2?

0 голосов
/ 02 августа 2020

Я хотел бы использовать GMP на windows, и мне нужно построить программы c stati. (это означает, что, если кто-то может предоставить другое решение для компиляции программ win32 x86_64 с использованием libgmp, я также буду признателен.)

Теперь у меня установлен msys2, и в нем я выполнил

pacman -S base-devel gcc 

, а затем я загрузил gmp-6.2.0.tar.lz с gmplib.org и извлек его куда-нибудь, например,

C:\Users\xxx\gmp-6.2.0

Затем я, используя msys2 mingw64, вошел в этот каталог и выполнил

./configure
make
make check
make install

Первые две команды кажутся хорошими, вывод кажется правильным. Тем не менее, make check не дала мне понять, правильная марка или нет. В конце вывода написано:

make[5]: Leaving directory '/c/Users/Fred/gmp-6.2.0/tests/cxx'
make[4]: Leaving directory '/c/Users/Fred/gmp-6.2.0/tests/cxx'
make[3]: Leaving directory '/c/Users/Fred/gmp-6.2.0/tests/cxx'
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/tests'
Making check in mpn
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/mpn'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/mpn'
Making check in mpz
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/mpz'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/mpz'
Making check in mpq
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/mpq'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/mpq'
Making check in mpf
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/mpf'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/mpf'
Making check in printf
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/printf'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/printf'
Making check in scanf
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/scanf'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/scanf'
Making check in rand
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/rand'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/rand'
Making check in cxx
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/cxx'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/cxx'
Making check in demos
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/demos'
Making check in calc
make[3]: Entering directory '/c/Users/Fred/gmp-6.2.0/demos/calc'
make  check-am
make[4]: Entering directory '/c/Users/Fred/gmp-6.2.0/demos/calc'
make[4]: Nothing to be done for 'check-am'.
make[4]: Leaving directory '/c/Users/Fred/gmp-6.2.0/demos/calc'
make[3]: Leaving directory '/c/Users/Fred/gmp-6.2.0/demos/calc'
Making check in expr
make[3]: Entering directory '/c/Users/Fred/gmp-6.2.0/demos/expr'
make[3]: Nothing to be done for 'check'.
make[3]: Leaving directory '/c/Users/Fred/gmp-6.2.0/demos/expr'
make[3]: Entering directory '/c/Users/Fred/gmp-6.2.0/demos'
make[3]: Nothing to be done for 'check-am'.
make[3]: Leaving directory '/c/Users/Fred/gmp-6.2.0/demos'
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/demos'
Making check in tune
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/tune'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/tune'
Making check in doc
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0/doc'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0/doc'
make[2]: Entering directory '/c/Users/Fred/gmp-6.2.0'
make[2]: Leaving directory '/c/Users/Fred/gmp-6.2.0'
make[1]: Leaving directory '/c/Users/Fred/gmp-6.2.0'

И make install выдает похожие сообщения. Наконец, когда я попытался скомпилировать программы, он сказал:

/usr/lib/gcc/x86_64-pc-msys/9.3.0/../../../../x86_64-pc-msys/bin/ld: cannot find -lgmp

На самом деле я не профессиональный программист, поэтому я не совсем уверен, как установить GMP для mingw. Буду глубоко признателен, если кто-нибудь подскажет, как это сделать с нуля.

1 Ответ

0 голосов
/ 03 августа 2020

С помощью @HolyBlackCat я решил эту проблему и успешно скомпилировал свои программы. Вот процесс:

Установить msys2

  1. Загрузите исполняемый файл из msys2.org и установите msys2. В открывающемся меню вы получите три ярлыка: 32-разрядный MSYS MinGW, 64-разрядный MSYS2 MinGW и MSYS2 MSYS. Разница между ними - ПУТЬ. Путь MSYS - / usr / bin, а путь 64-разрядной версии MinGW включает /mingw64/bin.
  2. Установить необходимые пакеты. Выполните следующие команды:
$ pacman -Syu
$ pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gmp

Скомпилируйте свои программы

  1. Откройте MSYS2 MinGW 64-bit
  2. Используйте x86_64-w64-mingw32-g cc, а не g cc для компиляции. (Если вы не установили g cc, вы можете просто использовать g cc для компиляции.) Если вы используете другую оболочку, используйте полный путь / mingw64 / bin / x86_64-w64-mingw32-g cc

Другая информация

Если вам нужно использовать инструменты autoconf, вы можете установить их с помощью

$ pacman -S base-devel
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...