GMP - это свободная библиотека для производства различных арифметических действий над целыми, рациональными и действительными числами. Разрядность чисел, с которыми работает библиотека ограничивется памятью самой машины. На многих сайтах пишут что GMP самая быстрая. В GMP входят следующие категории функций: - Функции для работы с целыми числами (mpz).
- Функции для работы с рациональными числами (mpq).
- Функции для работы с числами с плавающей запятой (mpf).
- Низкоуровневые функции для работы с натуральными числами (mpn).
Ну что же попробуем собрать GMP под Windows. Для этого надо скачать кое какие дистрибутивы, для начала сам GMP http://gmplib.org/ (текущая на данный момент 5.0.5), затем mingw - http://sourceforge.net/projects/mingw/files/ (лично я его не качал, т.к. я любитель Qt то я пользую mingw из поставки Qt Creator), затем MSYS - http://www.mingw.org/wiki/msys (здесь ссылка на свежак). ОК теперь все это дело устанавливаем, начинаем с mingw - ставим в c:\mingw (но это у меня), затем MSYS(во время установки указываем каталог с mingw, но если вы этого не сделали ни беда, в папке etc есть файлик fstab.sample, залазте в него, редактируйте пути и переименовывайте в fstab). Распаковываем архив с GMP в C:\MinGW\msys\1.0\home\agapiy (C:\MinGW\msys\1.0 - папка с установленным MSYS, home\agapiy - рабочая папка пользователя ("agapiy"-имя пользователя)). Кликаем по иконке MSYS на рабочем столе, появляется консоль. Также MinGW и msys можно установить через mingw-get-inst (что гораздо проще).
mkdir gmp #создаем каталог, сюда будут сбрасываться результаты сборки cd gmp-5.0.5 #переходим в каталог с сырцами GMP Сначало собирем для MinGW под Win (результат статическая библиотека libgmp.a) ./configure --prefix=/home/agapiy/gmp #конфигурируем GMP перед сборкой, /home/agapiy/gmp куда записываем результат компиляции, у вас скорее всего будет другая папка. Идем курить... Если без ошибок продолжаем дальше. make #собираем make check #проверяем (на сайте разработчика это рекомендуют сделать) make install #устанавливаем в папку GMP make clean #убираемся Итак, теперь в /home/agapiy/gmp были созданы папки include (gmp.h), lib(libgmp.a и libgmp.la) и share копируем файлы в соответствующие паки MinGW Теперь собирем dll ./configure --prefix=/home/agapiy/gmp --disable-static --enable-shared make && make check && make install && make clean
В /home/agapiy/gmp добавилась папка bin(libgmp-10.dll (хотя программа собранная VS2010 требует libgmp-3.dll и libgmp-3.lib - может кто объяснит почему так??????, просто переименуйте libgmp-10.dll в libgmp-3.dll)), в lib добавился libgmp.dll.a
В текущей папке была создана папка .libs, в ней был создан файл libgmp-10.dll.def (переименуйте его в libgmp-3.def), его мы и передадим утилите lib из VC, для сборки из него файла libgmp-3.lib. Действуем
cd .libs lib /machine:x86 /def:libgmp-3.def Результат сборки здесь (собирал под Win7 32, AMD Phenom X3 8650).
Источник: http://cs.nyu.edu/exact/core/gmp/ |