Как проверить версию GMP, MPFR и CamlIDL?

У меня простой вопрос... Как я могу проверить версию GMP, установленную на моей машине? Что с МПФР? А как насчет CamlIDL?

Большое тебе спасибо


person SoftTimur    schedule 19.09.2011    source источник
comment
Что касается gmp, я не устанавливал его на всю систему. Я статически связал его с моим проектом. Итак, я нашел версию из заголовочного файла gmp.h или - во время выполнения - printf("%s", gmp_version);   -  person rustyMagnet    schedule 13.04.2020


Ответы (2)


Чтобы проверить версию GMP(MPIR), откройте строку __gmp_version(__mpir_version) в динамической библиотеке с именем libgmp.so.XYZ(libmpir.so.XYZ). Каталог вашей стандартной библиотеки может содержать более одного такого файла (это происходит, если вы устанавливаете более новую версию GMP или MPIR, но ваш менеджер пакетов предпочитает сохранить старую версию, поскольку она все еще необходима).

Отрезание небольшого фрагмента кода Python от benchmark_det_Dixon.py :

import ctypes
so_name='/usr/lib/libgmp.so'
var_name='__gmp_version'
L=ctypes.cdll.LoadLibrary(so_name)
v=ctypes.c_char_p.in_dll(L,var_name)
print v.value

Приведенный выше код работает только под Linux/Unix; должна быть возможность портировать его на другую ОС, поддерживаемую пакетом ctypes Python.

Чтобы получить версию MPFR, вызовите mpfr_get_version():

M=ctypes.cdll.LoadLibrary('/usr/lib/libmpfr.so')
M.mpfr_get_version.restype=ctypes.c_char_p
print M.mpfr_get_version()
person Kryskov Denis    schedule 10.04.2014

Стандартный способ Autoconf сделать это — выбрать какую-нибудь библиотечную функцию, которая находится в требуемой минимальной версии X, а не в версии X-1, а затем посмотреть, сможете ли вы успешно скомпилировать крошечную программу, которая вызывает эту функцию. Это не так элегантно, как запрашивать строку версии у какого-нибудь оракула, но имеет то преимущество, что демонстрирует правильность среды сборки.

person Chris Conway    schedule 19.09.2011