Instalação das versões anteriores do MPFR do confronto entre GMP

2

Portanto, é um erro comum ao instalar o MPFR que, se mais de uma versão do libgmp estiver instalada, você encontrará erros. Isso está bem documentado no arquivo INSTALL,

Se eu executar locate libgmp , o resultado é

/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

A versão que eu realmente quero usar eu acabei de instalar e posso ver em /usr/local/lib (estranho que isso não apareça acima ??). Os arquivos INSTALL dizem que se este for o caso, então

  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).  

mas não sei exatamente o que desinstalar e, de fato, como, apenas excluo? Além disso, o locate libgmp nem mesmo encontra aquele sob /usr . Eu não quero que o Maple ou o Mathematica morram em mim ...

Outras correções que eu tentei são 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 , como eu li em algum outro lugar que isso pode ajudar, mas sem sucesso. Eu também fiz o patch com o mais recente.

Eu realmente deletei libgmp.so.10.0.2 e libgmp.so.10 de / usr / lib / i386-linux-gnu / e isso parece ter causado grandes problemas com o funcionamento do gcc, ahh

    
por fpghost 29.10.2012 / 14:07

1 resposta

2

The version I actually want to use I have just installed and can see in /usr/local/lib (odd that this doesn't appear above??).

locate depende de um banco de dados que é reconstruído periodicamente por updatedb . Se você adicionar arquivos ao seu sistema entre duas execuções de updatedb , locate naturalmente não os verá. (Este banco de dados é porque locate é muito mais rápido que um find em todo o sistema de arquivos. A desvantagem é que sua saída pode estar desatualizada.)

Existem maneiras de forçar o updatedb a ser executado novamente, mas o método depende da distribuição específica do Linux, e seria uma questão diferente de qualquer maneira.

I'm not sure exactly what to uninstall and indeed how, do I just delete?

Não, não exclua as cópias que pertencem ao Maple e ao Mathematica. É extremamente improvável que os instaladores tenham adicionado esses caminhos ao caminho de pesquisa da biblioteca padrão do compilador.

Você pode verificar isso com este comando:

$ ld --verbose | grep SEARCH

Você não deve ver ~/maple ou /usr/local/Wolfram em qualquer lugar da saída.

locate libgmp doesn't even find the one under /usr

Sim, na verdade. A biblioteca em /usr/lib/i386-linux-gnu é a que seu documento INSTALL está se referindo. O documento INSTALL é literalmente verdadeiro apenas para sistemas * ix tradicionais e simples. Às vezes, os ixes divergem da prática padrão de colocar arquivos diretamente em /usr/lib . Neste caso, é por causa da transição contínua de 32 para 64 bits que acontece no mundo Linux x86.

Algum dia, no futuro, quando todos os sistemas de 32 bits estiverem inativos, as distribuições do Linux poderão reverter para o antigo estilo /usr/lib .

Tenha em atenção que o esquema que o seu sistema parece utilizar não é universal nem dentro dos Linuxes. Outro esquema comum é colocar bibliotecas de 32 bits em /usr/lib e bibliotecas de 64 bits em /usr/lib64 .

O ponto importante aqui é que esses diretórios de biblioteca do sistema não estão à frente de /usr/local/lib para o sistema de compilação do seu pacote fazer a coisa certa. O comando ld que eu dei acima dirá isso. Se acontecer que /usr/local/lib não esteja à frente de /usr/lib* como os criadores de MPFR assumiram, você terá que encontrar uma maneira de empurrá-lo adiante.

Uma maneira de fazer isso é:

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

Pode haver um método mais elegante, fornecido no documento INSTALL . Ou diga:

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

Isso informará se há alguma opção de script configure relacionada ao GMP que permita controlar qual biblioteca ela usa.

    
por 29.10.2012 / 15:57