2017-11-06 7 views
1

異なるコンパイラでコンパイルされた同じC++/FortranライブラリをCMakeでシステムにインストールする必要があります。同じライブラリのさまざまなコンパイラ固有のバージョンをシステムにインストールする標準的な場所はありますか?たとえば、lib.solib.aがすでにシステムパッケージマネージャー/usr/の下にインストールされていると仮定すると、追加のコンパイラ固有のバージョンを別のフォルダにインストールすることをお勧めします。usr/local。それともあなたがアドバイスできるより良い方法がありますか?UNIXのようなシステムに複数のコンパイラ固有のライブラリをインストールする場所

答えて

0

コンパイラ/ライブラリ/バージョンの数によって異なります。あなたはそれらのいくつかを持っている場合、私は(ほぼ)場所の任意の選択が正しいと思うが、私は個人的に手動でインストールされたコードの/ opt/pathsを好む。しかし、あなたがそれらのいくつかの組み合わせを持つことを開始する場合、簡単に問題になる。また、「最適な」場所に関する質問は、あるライブラリの使用方法から別のライブラリへの切り替えに、おそらくLD_LIBRARY_PATHを手動で設定することを避けるための最良の方法に関する質問に関連していると思います。

  1. にrootユーザーを使用しないでください:

    は、私はあなたが多くのコンパイラ/バージョンと多くのライブラリ/アプリケーションをサポートし、また、多くのユーザーのためにそれらを提供するシステムのための私の経験に応じていくつかの個人的な提言を与えますコンパイルされたソフトウェアをインストールする:「インストーラアカウント」を使用して、必要なときに他のユーザーに必要なときに読み取りと実行の権限を与える。

  2. コンパイルされたソフトウェアのパスを選択する。/optおよび2つのサブフォルダ/ opt/buildと/ opt/installを定義します。ソースとコンパイル先の最初のものとコンパイル先のものの2つ目を指定します。

  3. カテゴリに基づいていくつかのサブフォルダを作成します。 /コンパイラ、/ライブラリ、/アプリケーション.../opt/buildと/ opt/installの両方から。

  4. /コンパイラの下でコンパイラを準備します。 /compilers/gnu/6.3または/ compilers/intel/2017。可能であれば、それらをコンパイルします。 /opt/build/compilers/gnu/6.3から/opt/install/compilers/gnu/6.3に変更するか、/ installフォルダに入れてください。/opt/install/compilers/intel/2017

  5. バージョン、コンパイラおよびコンパイラのバージョンを指定するサブフォルダを追加するライブラリ(またはアプリケーション)のツリーを準備します。あなたが持っている、/opt/build/libraries/boost/1.64.0/gnu/6.3からコンパイルして、この段階では

を/opt/install/libraries/boost/1.64.0/gnu/6.3するインストールよく整理されたもの。しかし:

  • あなたが使用したいライブラリを決定することは困難である、あなたがLD_LIBRARY_PATHを指定したり、手動で正しいものをリンクする必要があり、状況が悪化しているあなたがアプリケーション

  • にも対処するときでありますライブラリ間の依存関係を考慮しないでください:boost/1.64.0/gnu/6.3とリンクするときにg ++ 6.3を強制するにはどうすればいいですか?

これらの問題やその他多くの問題に対処するには、ツールを使用してください。 http://modules.sourceforge.net/を使用すると、あるライブラリから別のライブラリに簡単に切り替えることができ、依存関係を強制したり、ヘルプを表示したりすることができます。

関連する問題