|
23 / 22 / 6
Регистрация: 19.12.2011
Сообщений: 75
|
|
Сборка библиотеки04.06.2012, 13:04. Показов 8821. Ответов 9
Метки нет (Все метки)
Доброго времени суток!
Есть библиотека для работы с большими числами - GMP. GMP Скачав архив я обнаружил в нем много - много .h и .с файлов. Не подскажете, как эту толпу файлов собрать в одну либу? ( lib или dll файл ). Всем спасибо)
0
|
|
| 04.06.2012, 13:04 | |
|
Ответы с готовыми решениями:
9
Сборка библиотеки Сборка библиотеки qwt сборка библиотеки из сорсов qt 4.8.4 |
|
Почетный модератор
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
|
|
| 04.06.2012, 13:51 | |
|
На сколько я понял, там не предусмотрена сборка под виндовс. Хотя, на их сайте написано, что были случаи, когда оно работало под виндовсом.
1
|
|
|
23 / 22 / 6
Регистрация: 19.12.2011
Сообщений: 75
|
|
| 05.06.2012, 12:12 [ТС] | |
|
Но ведь под Visual Studio под Win7 пошло же! Неужели для Qt 4.7 нельзя это забацать?
0
|
|
|
Почетный модератор
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
|
||
| 05.06.2012, 14:27 | ||
|
0
|
||
|
Почетный модератор
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
|
|
| 05.06.2012, 17:40 | |
|
Ну так там же есть и под MinGW готовое. В Qt изначально компилятор MinGW используется.
0
|
|
|
23 / 22 / 6
Регистрация: 19.12.2011
Сообщений: 75
|
|
| 05.06.2012, 21:17 [ТС] | |
|
Есть то оно есть, но внутри, там две либы в формате .a и .la. Насколько я понимаю, это для linux.
Только если динамическую библиотеку пробовать, но оно у меня как - то не срослось)
0
|
|
|
Почетный модератор
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
|
|||||||
| 06.06.2012, 08:25 | |||||||
|
Просто в файле проекта добавь
2
|
|||||||
|
23 / 22 / 6
Регистрация: 19.12.2011
Сообщений: 75
|
|
| 06.06.2012, 09:39 [ТС] | |
|
Спасибо за ответы, нашел сборку для WIN7 GMP под Win7. Теперь все стало понятно. Там в конце ссылка на результат ( не рабочая ) - Чтобы скачать файл -
Правой кнопкой мыши, копировать ссылку, вставляем в адресную строку, и добавляем : после http Результат Здесь
0
|
|
|
23 / 22 / 6
Регистрация: 19.12.2011
Сообщений: 75
|
||||||||||||||||||||||||||
| 08.06.2012, 14:45 [ТС] | ||||||||||||||||||||||||||
|
Небольшое дополнение к инструкции:
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 (что гораздо проще). 1. mkdir gmp #создаем каталог, сюда будут сбрасываться результаты сборки 2. cd gmp-5.0.5 #переходим в каталог с сырцами GMP Сначало собирем для MinGW под Win (результат статическая библиотека libgmp.a) ./configure --prefix=/home/agapiy/gmp #конфигурируем GMP перед сборкой, /home/agapiy/gmp куда записываем результат компиляции, у вас скорее всего будет другая папка. Идем курить...// Курить пришлось очень долго... Почти 2 ч длилась только первая операция Если без ошибок продолжаем дальше. 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 - может кто объяснит почему так?????? - потому что во время выполнения операций создается несколько фалов с одинаковыми именами и чтоб не было путаницы добавляется число 10 ( ИМХО ), просто переименуйте libgmp-10.dll в libgmp-3.dll)), в lib добавился libgmp.dll.a ЕСЛИ ВЫ ВЫПОЛНИЛИ MAKE CLEAN , ТО ПАПКА .libs БУДЕТ УДАЛЕНА, СООТВЕТСТВЕННО НЕ БУДЕТ И libgmp-10.dll.def! В текущей папке была создана папка .libs, в ней был создан файл libgmp-10.dll.def (переименуйте его в libgmp-3.def), его мы и передадим утилите lib из VC, для сборки из него файла libgmp-3.lib. Действуем НО ДОПОЛНЕНИЕ: ИДЕМ ( ЕСЛИ УСТАНОВЛЕНА VS ) C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\ ПЕРЕНОСИМ ДВА ФАЙЛА LIB.EXE И LINK.EXE В ПАПКУ .libs ЕСЛИ НЕТ, ТО ПРИДЕТСЯ ИСКАТЬ ИЛИ УСТАНАВЛИВАТЬ VS. ВОЗНИКАЕТ ОШИБКА , что система не может найти файл mspdb80.dll поиск VS 9.0 ( у меня ) находим, переносим его в system32. cd .libs lib /machine:x86 /def:libgmp-3.def радуемся собранной библиотеке. завтра напишу, как прикрепить ее к проекту QT Creator Добавлено через 13 часов 38 минут Теперь про подключение полученной библиотеки к Qt Creator. 1. В левом верхнем углу находиться вкладка Проекты. Выделяем необходимый нам проект -> Правой кнопкой мыши по названию-> Добавить библиотеку. 2. Появляется окно : Три варианта - ТИП БИБЛИОТЕКИ: Внутренняя , внешняя , системная. 3. Выбираем внешнюю библиотеку. 4. Переносим файлы libgmp-3.lib, gmp.h и libgmp-3.def в папку нашего проекта ( не обязательно, можно указать весь путь, а можно и так ) . 5. Файл Библиотеки -> обзор-> выбираем libgmp-3.lib. В файле .pro появляется такие строки
Далее в файле main.cpp пишем
Результат : 1267650600228229401496703205376 Если надо, то выложу описание функций ( по мере перевода ) Добавлено через 1 час 43 минуты //======================================== ======================================= Функции инициализации и присвоения //======================================== ======================================= Для удобства, GMP обеспечивает параллельную серию инициализации и набор функций, которые инициализируют переменную, а затем сохраняют это значение там. Имена таких функций имеют вид mpz_init_set... Вот пример использования одного:
- Функция: void mpz_init_set (mpz_t ROP, mpz_t ор); - Функция: void mpz_init_set_ui (mpz_t ROP, unsigned long int op); - Функция: void mpz_init_set_si (mpz_t ROP, signed long int ор); - Функция: void mpz_init_set_d (mpz_t ROP, double ор); Инициализация ROP с конечности пространства(???) и установить начальное числовое значение из ор. - Функции: int mpz_init_set_str (mpz_t ROP, char * str, int base); Инициализация ROP и установите его значение как mpz_set_str (см. документацию выше ). Если строка имеет правильный номер базы base, функция возвращает 0, если произошла ошибка, она возвращает -1 ROP инициализируется даже в случае возникновения ошибки.. (То есть, вы должны обратиться mpz_clear, из - за этого.) Добавлено через 33 минуты //======================================== ======================================= Функции инициализации //======================================== ======================================= Функции целочисленной арифметики предполагают, что все целые объекты инициализируются. Вы делаете это с помощью вызова функции mpz_init . Например,
- Функция: void mpz_init (mpz_t х) Инициализация х, и устанавливает его значение в 0. - Функция: void mpz_inits (mpz_t х, ...) Инициализация NULL-завершенного списка mpz_t переменных, и установить их в 0. - Функция: void mpz_init2 (mpz_t х, mp_bitcnt_t n) Инициализация х, с местом для n-разрядных чисел, установка его значения в 0. Вызов этой функции вместо mpz_init или mpz_inits никогда не нужен, перераспределение осуществляется автоматически с помощью GMP, когда это необходимо. n только исходное поле, х будет автоматически увеличиваться в обычном порядке, в случае необходимости, для последующего значения сохраняются. mpz_init2 позволяет избежать таких перераспределений, если максимальный размер известен заранее. - Функция: void mpz_clear (mpz_t х) Высвобождение памяти, занимаемого х. Вызывайте эту функцию для всех mpz_t переменных, когда вы закончили с ними работу. - Функция: void mpz_clears (mpz_t х, ...) Высвобождение памяти, занимаемое NULL-завершенным списком mpz_t переменных. - Функция: void mpz_realloc2 (mpz_t х, mp_bitcnt_t n) Изменить память, выделенную для х n бит. Значение х сохраняется, если она подходит, или значение 0, если нет. Вызов этой функции никогда не бывает необходимым, перераспределение осуществляется автоматически с помощью GMP, когда это необходимо. Но эта функция может быть использована для увеличения пространства для переменных для того, чтобы избежать повторного автоматического перераспределения, или уменьшить его, чтобы вернуть память обратно в кучу. PS. Простите за несколько корявый перевод ( все - таки вручную ) но смысл ясен. Добавлено через 33 минуты Список всех функций ( англ. ) GMP FUNC
3
|
||||||||||||||||||||||||||
| 08.06.2012, 14:45 | |
|
Помогаю со студенческими работами здесь
10
Сборка библиотеки Сборка библиотеки pHash Сборка статической библиотеки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub
Примеры вызова:
# Указанная валюта 'EUR'
floatrates-rub -Code 'EUR'
# Список имеющихся кодов валют
floatrates-rub -Available
function floatrates-rub {
|
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5
Примеры вызова
Get-WeatherRP5rss
с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
|
|
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr
Примеры вызова:
Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
|
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют
function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) {
$url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js'
$data = Invoke-RestMethod -Uri $url
$esc = 27
. . .
|
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений
Всем привет. А вот мой компьютер, переделанный из ноутбука.
Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
|
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
|
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца:
Хочу еще Симбу взять, очень нравится. . .
|