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から古いライブラリへのシンボリックリンクを手動で削除します。