GMPがインストールされている以前のバージョンのMPFRと競合しています。

GMPがインストールされている以前のバージョンのMPFRと競合しています。

したがって、MPFRをインストールするときによく犯される間違いは、libgmpバージョンを2つ以上インストールするとエラーが発生することです。これはインストールファイルでよく説明されています。

私が実行すると、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-gnuINSTALLこのINSTALL文書は実際には既存の単純な*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*方法を見つける必要があります。プッシュすぐ前に。

1つの方法は次のとおりです。

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

文書にはよりエレガントな方法があるかもしれませんINSTALL。または:

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

configureこれは、使用するライブラリを制御するためのGMP固有のスクリプトオプションがあるかどうかを示します。

おすすめ記事