Ubuntu - MPFR을 제거하고 소스에서 새 버전을 설치합니다.

Ubuntu - MPFR을 제거하고 소스에서 새 버전을 설치합니다.

Ubuntu Hardy Heron의 소스에서 gcc 4.4를 컴파일하려고 합니다. 문제는 MPFR 버전 2.3.2 이상이 필요하다는 것입니다. MPFR 버전 2.3.1이 있습니다. 나는 그들로부터 받은 이 작은 C 코드 조각을 실행하여 이를 확인할 수 있습니다.장소-:

#include <stdio.h>

#include <mpfr.h>

  int main (void)
  {
   printf ("MPFR library: %-12s\nMPFR header:  %s (based on %d.%d.%d)\n",
              mpfr_get_version (), MPFR_VERSION_STRING, MPFR_VERSION_MAJOR,
              MPFR_VERSION_MINOR, MPFR_VERSION_PATCHLEVEL);
   return 0;
}

cc -o version version.c -lmpfr -lgmp

이것은 다음과 같이 인쇄됩니다.

MPFR library: 2.3.1       
MPFR header:  2.3.2 (based on 2.3.2)

소스에서 MPFR(버전 2.3.2)을 다운로드하여 빌드했으며 /usr/local에 올바르게 설치되었지만 문제는 gcc가 기본적으로 여기에 연결되지 않는다는 것입니다. 새로운 MPFR 라이브러리에 연결하려면 다음 컴파일 옵션을 사용해야 했습니다.

gcc test_mpfr.o -o test_mpfr -Wl,-Bstatic -l:/usr/local/lib/libmpfr.a -Wl,-Bdynamic 

그러면 정확하고 예상되는 출력이 생성됩니다.

MPFR library: 2.3.2       
MPFR header:  2.3.2 (based on 2.3.2)

이제 내 질문은

첫째, 기본 MPFR 설치를 제거하는 방법내 시스템에서(apt-get --purge 제거 libmpfr-dev는 아무 작업도 수행하지 않습니다.), 그리고

둘째, gcc가 자동으로 연결할 수 있도록 새 MPFR 설치를 기본 설치로 설정하는 방법입니다.

답변1


시스템 gcc, mpfr을 제거하는 것은 좋은 생각이 아닙니다. 다시 설치하세요. ( sudo apt-get install g++) 및: 동시에 원하는 만큼 많은 gcc 버전을 설치할 수 있습니다. Hardy의 기본 컴파일러: sudo apt-get install g++ g++-3.3 g++-3.4 g++-4.1,,, 여기서 g++는 시스템 컴파일러 gcc/g++ 버전 4.2.4입니다.

번역가,gcc44, g++44 사용 가능Ubuntu 8.04 Hardy의 경우(예: i386: {gcc44_4.4.7-2_i386.deb, gcc44-c++_4.4.7-2_i386.deb, libstdc++44-devel_4.4.7-2_i386.deb}) 링크:

GCC 44https://drive.google.com/file/d/0B7S255p3kFXNYmpYeGZHS0RUR0U/view?usp=sharing gcc44-c++https://drive.google.com/file/d/0B7S255p3kFXNMEF1NWFiVFViMlk/view?usp=sharing libstdc++44-devhttps://drive.google.com/file/d/0B7S255p3kFXNWHB3ejd0TTNhUWc/view?usp=sharing

설치: 세 가지 패키지를 다운로드한 후...

1) sudo apt-get install libgmp3c2
cd Downloads/
2) sudo gdebi gcc44_4.4.7-2_i386.deb
3) sudo gdebi libstdc++44-devel_4.4.7-2_i386.deb
4) sudo gdebi gcc44-c++_4.4.7-2_i386.deb

참고: 운영 체제가 amd64/x86_64이고 64비트 패키지를 업로드할 수 있는지 알려주십시오.



gcc-4.4.7을 수동으로 빌드하려면 외부 mpfr, gmp가 필요하지 않습니다.

tar xvf gcc-4.4.7.tar.bz2 (A configured gcc cannot be reused, please start from scratch)
cd gcc-4.4.7/
tar xvf mpfr-2.4.2.tar.bz2
mv -v mpfr-2.4.2 mpfr
tar xvf gmp-5.0.0.tar.bz2
mv -v gmp-5.0.0 gmp

gcc에는 소스 코드 외부의 빌드 폴더가 필요합니다...

cd ../
mkdir build-gcc44
cd build-gcc44/
../gcc-4.4.7/configure --program-suffix=44 --prefix=/usr/local/gcc447 --enable-clocale=gnu --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-languages=c,c++ --disable-multilib

make
sudo make install
cd /usr/bin/
sudo ln -s /usr/local/gcc447/bin/gcc44
sudo ln -s /usr/local/gcc447/bin/g++44

추가 컴파일러 사용 예:

1) export CC=gcc44 CXX=g++44 && [other command]
Like : 2) export CC=gcc44 CXX=g++44 && ./configure
3) gcc44 file.c

답변2


내 운영 체제는 x86_64입니다.

Packages.amd64: g++44_4.4.7-ubuntu8_amd64.deb, gcc44_4-4-7-ubuntu8_amd64.deb, libstdc++44-dev_4.4.7-ubuntu8_amd64.deb, $를 사용하여 생성됨dpkg-deb -b

링크: gcc44https://drive.google.com/file/d/0B7S255p3kFXNQlVHeXdPc25sSEE/view?usp=sharing g++44https://drive.google.com/file/d/0B7S255p3kFXNeU5jSG9ZdXNQQTQ/view?usp=sharing libstdc++44-devhttps://drive.google.com/file/d/0B7S255p3kFXNbWxGNEM0TG93LW8/view?usp=sharing

1) sudo gdebi libstdc++44-dev_4.4.7-ubuntu8_amd64.deb
2) sudo gdebi gcc44_4-4-7-ubuntu8_amd64.deb
3) sudo gdebi g++44_4.4.7-ubuntu8_amd64.deb

컴파일러는 ~150GB 애플리케이션, 수백 개의 c,c++ 파일을 사용하여 Hardy에서 테스트했습니다. 결과 = OK.



gcc4.4를 구축하려면 MPFR이 필요합니다.

틀림없이. 내 게시물을 참조하세요. mpfr은 gcc-4.4.7/에 압축이 풀립니다.

변조되지 않았는지 어떻게 확인하나요?

지금까지 제가 수년에 걸쳐 구축한 많은 패키지는 괜찮았습니다. 어떤 사용자의 불만도 없습니다.

오늘의 패키지는 Ubuntu Hardy의 Alien 명령을 사용하여 처리되었으며 몇 분 정도 절약되었습니다. 진짜 재건축이라기보다...

$ dpkg-deb -b packagename packagename_version_architecture.deb

CentOS 5.11 리포지토리에서 변환된 패키지 3개http://mirror.centos.org/centos/5.11/os/i386/CentOS/, 즉 "기업 품질"입니다.


답변3

비슷한 문제가 있어서 이전 버전의 mpfr(libmpfr4)을 제거하고 싶었습니다.

해결책

  • sudo apt-get libmpfr4 제거
  • usr/local/lib에서 이전 라이브러리에 대한 심볼릭 링크를 수동으로 제거합니다.

관련 정보