GMP가 설치된 이전 버전의 MPFR과 충돌합니다.

GMP가 설치된 이전 버전의 MPFR과 충돌합니다.

따라서 MPFR을 설치할 때 흔히 저지르는 실수는 libgmp 버전을 두 개 이상 설치하면 오류가 발생한다는 것입니다. 이는 설치 파일에 잘 설명되어 있습니다.

내가 실행하면 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(위에 표시되지 않는 것이 놀랍습니까?). 설치 문서에는 이것이 사실이라면 다음과 같이 나와 있습니다.

  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아래의 것은 어쨌든 찾을 수 없습니다. 저는 /usrMaple이나 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도움이 될 수 있는 다른 곳에서 읽은 대로 다른 수정 사항을 시도했지만 소용이 없었습니다. 최신 패치도 적용해 봤습니다.

나는 순진하게 /usr/lib/i386-linux-gnu/에서 libgmp.so.10.0.2와 libgmp.so.10을 제거했는데 이것이 gcc 작동에 큰 문제를 일으키는 것 같습니다.

답변1

내가 실제로 사용하고 싶은 버전은 방금 설치되었으며 /usr/local/lib에서 볼 수 있습니다. (위에 표시되지 않는 것이 놀랍습니까?)

locate정기적으로 데이터베이스를 재구축하세요 updatedb. 실행 사이 updatedb에 시스템에 파일을 추가하면 locate자연스럽게 해당 파일이 표시되지 않습니다. (이 데이터베이스는 locate전체 파일 시스템보다 훨씬 빠릅니다 find. 단점은 출력이 오래될 수 있다는 것입니다.)

강제로 다시 실행하는 방법이 있지만 updatedb방법은 특정 Linux 배포판에 따라 달라지며 이에 관계없이 다른 문제가 됩니다.

무엇을 제거해야 할지, 어떻게 제거해야 할지 잘 모르겠습니다. 삭제해야 합니까?

아니요, Maple 및 Mathematica의 사본을 삭제하지 마십시오. 설치 프로그램이 이러한 경로를 컴파일러의 기본 라이브러리 검색 경로에 추가했을 가능성은 거의 없습니다.

다음 명령을 사용하여 확인할 수 있습니다.

$ ld --verbose | grep SEARCH

출력에 or 가 표시되어서는 안 됩니다 ~/maple./usr/local/Wolfram

/usr 아래에서도 libgmp를 찾을 수 없습니다.

사실 그렇습니다. 해당 라이브러리는 문서가 참조하는 라이브러리입니다 /usr/lib/i386-linux-gnu. INSTALLINSTALL문서는 실제로 기존의 간단한 *ix 시스템에만 적용됩니다. 때때로 *ixes는 파일을 직접 저장하는 것과 관련이 있습니다 /usr/lib. 이 경우 x86 Linux 세계에서 진행 중인 32비트에서 64비트로의 전환 때문입니다.

언젠가 32비트 시스템이 모두 사라지면 Linux 배포판은 이전 /usr/lib스타일로 되돌아갈 수도 있습니다.

귀하의 시스템은 Linux에서도 보편적이지 않은 체계를 사용하고 있는 것 같습니다. 또 다른 일반적인 해결책은 32비트 라이브러리 /usr/lib/usr/lib64.

여기서 중요한 점은 /usr/local/lib올바른 작업을 수행하기 위해 이러한 시스템 라이브러리 디렉터리가 패키지의 빌드 시스템보다 앞서 있을 수 없다는 것입니다. ld위에서 내린 명령이 이를 알려줄 것입니다. /usr/local/libMPFR 제작자가 가정한 것만큼 선도적이지 않은 것으로 밝혀지면 /usr/lib*다음 방법을 찾아야 합니다.푸시바로 앞에.

한 가지 방법은 다음과 같습니다.

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

문서에 더 우아한 방법이 있을 수 있습니다 INSTALL. 또는:

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

configure이는 사용하는 라이브러리를 제어할 수 있는 GMP 관련 스크립트 옵션이 있는지 알려줍니다 .

관련 정보