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

インストール:3つのパッケージをダウンロードした後...

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

コンパイラは、約150 GBのアプリケーション、何百もの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から古いライブラリへのシンボリックリンクを手動で削除します。

関連情報