Intereting Posts

Установка MPFR предыдущих версий столкновения GMP

Таким образом, при установке MPFR распространенной ошибкой является то, что если установлено более одной версии libgmp, вы получаете ошибки. Это довольно хорошо документировано в файле INSTALL,

Если я запустил locate libgmp результат будет

 /home/lee/maple16/bin.IBM_INTEL_LINUX/libgmp.so /home/lee/maple16/bin.IBM_INTEL_LINUX/libgmp.so.3 /home/lee/maple16/bin.IBM_INTEL_LINUX/libgmp.so.3.4.1 /home/lee/maple16/bin.IBM_INTEL_LINUX/ATHLON256/libgmp.so /home/lee/maple16/bin.IBM_INTEL_LINUX/ATHLON256/libgmp.so.3 /home/lee/maple16/bin.IBM_INTEL_LINUX/ATHLON256/libgmp.so.3.4.1 /home/lee/maple16/bin.IBM_INTEL_LINUX/ATHLON512/libgmp.so /home/lee/maple16/bin.IBM_INTEL_LINUX/ATHLON512/libgmp.so.3 /home/lee/maple16/bin.IBM_INTEL_LINUX/ATHLON512/libgmp.so.3.4.1 /home/lee/maple16/bin.IBM_INTEL_LINUX/ATHLONXPSSE1/libgmp.so /home/lee/maple16/bin.IBM_INTEL_LINUX/ATHLONXPSSE1/libgmp.so.3 /home/lee/maple16/bin.IBM_INTEL_LINUX/ATHLONXPSSE1/libgmp.so.3.4.1 /home/lee/maple16/bin.IBM_INTEL_LINUX/P4SSE2/libgmp.so /home/lee/maple16/bin.IBM_INTEL_LINUX/P4SSE2/libgmp.so.3 /home/lee/maple16/bin.IBM_INTEL_LINUX/P4SSE2/libgmp.so.3.4.1 /home/lee/maple16/bin.IBM_INTEL_LINUX/PIII/libgmp.so /home/lee/maple16/bin.IBM_INTEL_LINUX/PIII/libgmp.so.3 /home/lee/maple16/bin.IBM_INTEL_LINUX/PIII/libgmp.so.3.4.1 /home/lee/maple16/bin.IBM_INTEL_LINUX/PIIISSE1/libgmp.so /home/lee/maple16/bin.IBM_INTEL_LINUX/PIIISSE1/libgmp.so.3 /home/lee/maple16/bin.IBM_INTEL_LINUX/PIIISSE1/libgmp.so.3.4.1 /usr/lib/i386-linux-gnu/libgmp.so.10 /usr/lib/i386-linux-gnu/libgmp.so.10.0.2 /usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgmp.so /usr/local/Wolfram/Mathematica/7.0/SystemFiles/Libraries/Linux/libgmp.so.3 /usr/local/Wolfram/Mathematica/7.0/SystemFiles/Libraries/Linux-x86-64 /libgmp.so.3 /usr/local/Wolfram/Mathematica/8.0/SystemFiles/Libraries/Linux/libgmp.so.10 /usr/local/Wolfram/Mathematica/8.0/SystemFiles/Libraries/Linux-x86-64 /libgmp.so.10 /usr/share/doc/libgmp10 /usr/share/doc/libgmp10/README.Debian /usr/share/doc/libgmp10/TODO.Debian /usr/share/doc/libgmp10/changelog.Debian.gz /usr/share/doc/libgmp10/copyright /var/lib/dpkg/info/libgmp10:i386.list /var/lib/dpkg/info/libgmp10:i386.md5sums /var/lib/dpkg/info/libgmp10:i386.postinst /var/lib/dpkg/info/libgmp10:i386.postrm /var/lib/dpkg/info/libgmp10:i386.shlibs 

Версия, которую я действительно хочу использовать, я только что установил и могу видеть в /usr/local/lib (странно, что это не отображается выше?). Файлы INSTALL говорят, что если это так,

  If you want to use the GMP version under /usr/local, then you should uninstall all the other GMP versions (header and library files) that may be seen in the search paths, but *NOT* the one under /usr (the version under /usr is provided by the OS vendor, and changing/removing anything related to it may break your system, and /usr should have a lower precedence than /usr/local anyway). 

но я не уверен, что именно удалять, и действительно, как я могу просто удалить? Кроме того, locate libgmp даже не находит под /usr иначе. Я не хочу, чтобы Maple или Mathematica умирали от меня …

Другие исправления, которые я пробовал, – это export CPLUS_INCLUDE_PATH=usr/local/include , export C_INCLUDE_PATH=usr/local/include, export LIBRARY_PATH=usr/local/lib, export LD_LIBRARY_PATH=usr/local/lib, export LD_RUN_PATH=usr/local/lib поскольку я читал где-то еще, что это может помочь, но безрезультатно. Я также исправил последнее.

Я наивно просто удалил libgmp.so.10.0.2 и libgmp.so.10 из / usr / lib / i386-linux-gnu /, и это, похоже, вызвало серьезные проблемы с работой gcc, ahh

Версия, которую я действительно хочу использовать, я только что установил и могу видеть в / usr / local / lib (странно, что это не отображается выше?).

locate полагается на базу данных, которая периодически восстанавливается с помощью updatedb . Если вы добавите файлы в свою систему между двумя прогонами updatedb , то locate естественно не увидит. (Эта база данных – это то, почему locate намного быстрее, чем find по всей файловой системе. Недостатком является то, что ее выход может быть устаревшим.)

Есть способы заставить updatedb работать снова, но метод зависит от конкретного дистрибутива Linux, и в любом случае это будет другой вопрос.

Я не уверен, что именно удалить, и действительно, как я просто удаляю?

Нет, не удаляйте копии, принадлежащие Maple и Mathematica. Очень маловероятно, чтобы их установщики добавили эти пути в путь поиска библиотеки по умолчанию для компилятора.

Вы можете проверить это с помощью этой команды:

 $ ld --verbose | grep SEARCH 

Вы не должны видеть ~/maple или /usr/local/Wolfram любом месте выхода.

найти libgmp даже не найти тот, который находится под / usr

На самом деле. Библиотека в /usr/lib/i386-linux-gnu является той, к которой относится ваш документ INSTALL . Документ INSTALL буквально верен только для традиционных, простых * ix-систем. Иногда * ixes расходятся со стандартной практикой размещения файлов непосредственно в /usr/lib . В этом случае это происходит из-за продолжающегося перехода от 32 до 64 бит, происходящего в мире x86 Linux.

Когда-нибудь в будущем, когда все 32-битные системы будут мертвы, дистрибутивы Linux могут вернуться к старому /usr/lib стилю.

Помните, что схема, которую ваша система использует, не является универсальной даже в Linux. Другой распространенной схемой является размещение 32-битных библиотек в /usr/lib и 64-разрядных библиотеках в /usr/lib64 .

Важным моментом здесь является то, что эти системные библиотечные каталоги не опережают /usr/local/lib для вашей системы сборки пакета, чтобы делать правильные вещи. Команда ld указанная выше, сообщит вам об этом. Если окажется, что /usr/local/lib не опережает /usr/lib* как предполагали создатели MPFR, вам нужно будет найти способ продвинуть его вперед.

Один из способов сделать это:

 $ ./configure LDFLAGS=-L/usr/local/lib 

Может быть более элегантный метод, указанный в документе INSTALL . Или, скажем:

 $ ./configure --help | grep -i gmp 

Это скажет вам, есть ли какие-либо configure сценария сценария, связанные с GMP, которые позволяют вам контролировать, какую библиотеку он использует.