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 remove libmpfr-dev 不执行任何操作), 和

其次,如何将新的 MPFR 安装设置为默认安装,以便 gcc 可以自动链接到它。

答案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} 。链接:

海湾合作委员会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 克++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

编译器在 Hardy 中使用约 150GB 的应用程序、数百个 c、c++ 文件进行了测试:结果 = OK。



构建 gcc4.4 需要 MPFR

当然。看我的帖子。 mpfr 在 gcc-4.4.7/ 内解压。

我如何验证它们未被篡改?

到目前为止,我多年来构建的许多软件包都还不错。没有任何用户的投诉。

今天的软件包是用 Ubuntu Hardy 的外星人命令处理的:节省了几分钟。而不是真正的重建......

$ dpkg-deb -b packagename packagename_version_architecture.deb

三个转换后的软件包来自 CentOS 5.11 存储库http://mirror.centos.org/centos/5.11/os/i386/CentOS/,即“企业质量”。


答案3

我有类似的问题,想要删除旧版本的 mpfr ( libmpfr4)。

解决方案

  • sudo apt-get 删除 libmpfr4
  • 从 usr/local/lib 手动删除旧库的符号链接

相关内容