GMP — это свободная библиотека для производства различных арифметических действий над целыми, рациональными и действительными числами. Разрядность чисел, с которыми работает библиотека ограничивется памятью самой машины. На многих сайтах пишут что GMP самая быстрая.
Ну что же попробуем собрать GMP под Windows. Для этого надо скачать кое какие дистрибутивы,
Сам GMP
MinGW — если есть в Qt Creator — не надо
MSYS
Теперь устанавливаем, начинаем с mingw — ставим в c:\mingw (но это у меня), затем MSYS(во время установки указываем каталог с mingw, но если вы этого не сделали ни беда, в папке etc есть файлик fstab.sample, залазте в него, редактируйте пути и переименовывайте в fstab).
Распаковываем архив с GMP в C:\MinGW\msys\1.0\home\user(C:\MinGW\msys\1.0 — папка с установленным MSYS, home\user — рабочая папка пользователя («user»-имя пользователя)). Кликаем по иконке MSYS на рабочем столе, появляется консоль. Также MinGW и MSYS можно установить через mingw-get-inst (что гораздо проще).
1.
2.
С начала собираем MinGW под Win (результатом будет статическая библиотека libgmp.a)
Далее идет длительная операция конфигурирования ( у меня около 2-ух часов )
Если без ошибок продолжаем дальше.
Итак, теперь в /home/user/gmp были созданы папки include (gmp.h), lib(libgmp.a и libgmp.la) и share копируем файлы в соответствующие папки MinGW ( ВАЖНО!!! )
Теперь собирем dll
В противном случае придется собирать все заново.
В /home/user/gmp добавилась папка bin (libgmp-10.dll, переименуйте libgmp-10.dll в libgmp-3.dll), в lib добавился libgmp.dll.a
В текущей папке была создана папка .libs, в ней был создан файл libgmp-10.dll.def (переименуйте его в libgmp-3.def), его мы и передадим утилите lib из VC, для сборки из него файла libgmp-3.lib.
ЕСЛИ ВЫ ВЫПОЛНИЛИ MAKE CLEAN, ТО ПАПКА .libs БУДЕТ УДАЛЕНА, СООТВЕТСТВЕННО НЕ БУДЕТ И libgmp-10.dll.def!
Идем ( если установлена VS ) C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\, переносим файлы LIB.EXE И LINK.EXE в .libs Если возникает ошибка, что система не может найти файл mspdb80.dll, то находим и переносим его в system32.
Далее запускаем link.exe и
Библиотека собрана.
Теперь про подключение полученной библиотеки к Qt Creator.
1. Создаем новый проект.
2. В левом верхнем углу находиться вкладка Проекты. Выделяем необходимый нам проект.
Правой кнопкой мыши по названию-> Добавить библиотеку.
3. Выбираем внешнюю библиотеку.
4. Переносим файлы libgmp-3.lib, gmp.h и libgmp-3.def в папку нашего проекта ( не обязательно, можно указать весь путь, а можно и так ).
5. Файл Библиотеки -> Обзор-> Выбираем libgmp-3.lib.
В файле имя_проекта.pro появляется такие строки
Стираем букву d после имени библиотеки.
Далее в файле main.cpp пишем
Это пример.
Вывод приложения: 1267650600228229401496703205376
Плюс для запуска не из компилятора нужно скопировать библиотеку в папку, где exe'шник
Ну что же попробуем собрать GMP под Windows. Для этого надо скачать кое какие дистрибутивы,
Сам GMP
MinGW — если есть в Qt Creator — не надо
MSYS
Теперь устанавливаем, начинаем с mingw — ставим в c:\mingw (но это у меня), затем MSYS(во время установки указываем каталог с mingw, но если вы этого не сделали ни беда, в папке etc есть файлик fstab.sample, залазте в него, редактируйте пути и переименовывайте в fstab).
Распаковываем архив с GMP в C:\MinGW\msys\1.0\home\user(C:\MinGW\msys\1.0 — папка с установленным MSYS, home\user — рабочая папка пользователя («user»-имя пользователя)). Кликаем по иконке MSYS на рабочем столе, появляется консоль. Также MinGW и MSYS можно установить через mingw-get-inst (что гораздо проще).
1.
mkdir gmp
— создаем каталог, сюда будут сбрасываться результаты сборки2.
cd gmp-5.0.5
— переходим в каталог с сырцами GMPС начала собираем MinGW под Win (результатом будет статическая библиотека libgmp.a)
./configure --prefix=/home/user/gmp
— конфигурируем GMP перед сборкой, /home/user/gmp куда записываем результат компиляции.Далее идет длительная операция конфигурирования ( у меня около 2-ух часов )
Если без ошибок продолжаем дальше.
make
— собираемmake check
— проверяем (на сайте разработчика это рекомендуют сделать)make install
— устанавливаем в папку GMPmake clean
— убираемсяИтак, теперь в /home/user/gmp были созданы папки include (gmp.h), lib(libgmp.a и libgmp.la) и share копируем файлы в соответствующие папки MinGW ( ВАЖНО!!! )
Теперь собирем dll
./configure --prefix=/home/user/gmp --disable-static --enable-shared
make
make check
make install
( ВАЖНО!!!) Ни в коем случае не выполнять make clean
В противном случае придется собирать все заново.
В /home/user/gmp добавилась папка bin (libgmp-10.dll, переименуйте libgmp-10.dll в libgmp-3.dll), в lib добавился libgmp.dll.a
В текущей папке была создана папка .libs, в ней был создан файл libgmp-10.dll.def (переименуйте его в libgmp-3.def), его мы и передадим утилите lib из VC, для сборки из него файла libgmp-3.lib.
ЕСЛИ ВЫ ВЫПОЛНИЛИ MAKE CLEAN, ТО ПАПКА .libs БУДЕТ УДАЛЕНА, СООТВЕТСТВЕННО НЕ БУДЕТ И libgmp-10.dll.def!
Идем ( если установлена VS ) C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\, переносим файлы LIB.EXE И LINK.EXE в .libs Если возникает ошибка, что система не может найти файл mspdb80.dll, то находим и переносим его в system32.
Далее запускаем link.exe и
cd .libs
lib /machine:x86 /def:libgmp-3.def
Библиотека собрана.
Теперь про подключение полученной библиотеки к Qt Creator.
1. Создаем новый проект.
2. В левом верхнем углу находиться вкладка Проекты. Выделяем необходимый нам проект.
Правой кнопкой мыши по названию-> Добавить библиотеку.
3. Выбираем внешнюю библиотеку.
4. Переносим файлы libgmp-3.lib, gmp.h и libgmp-3.def в папку нашего проекта ( не обязательно, можно указать весь путь, а можно и так ).
5. Файл Библиотеки -> Обзор-> Выбираем libgmp-3.lib.
В файле имя_проекта.pro появляется такие строки
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/ -llibgmp-3
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/ -llibgmp-3d // - стираем букву d после 3
else:symbian: LIBS += -llibgmp-3
else:unix: LIBS += -L$$PWD/ -llibgmp-3
INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/
win32:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/libgmp-3.lib
else:win32:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/libgmp-3d.lib // - стираем букву d после 3
else:unix:!symbian: PRE_TARGETDEPS += $$PWD/liblibgmp-3.a
Стираем букву d после имени библиотеки.
Далее в файле main.cpp пишем
#include "gmp.h"
#include <QtCore/QCoreApplication>
#include <conio.h>
#include <stdio.h>
#include "gmp.h"
int main ( int argc, char *argv[] )
{
QCoreApplication a(argc, argv);
mpz_t x;
mpz_init_set_si(x, 1);
for ( int i = 0; i < 100; i ++ )
mpz_add ( x, x, x );
mpz_out_str ( stdout, 10, x );
getch();
return a.exec();
}
Это пример.
Вывод приложения: 1267650600228229401496703205376
Плюс для запуска не из компилятора нужно скопировать библиотеку в папку, где exe'шник