私はしばしばgmp-6.1.2、mpfr-4.0.1、gcc-7.xなどの使用のためにソースからさまざまなライブラリを構築します。これを行うとき、私は--prefix=/usr/local/gcc-7.2.0
これがインストールされている場所を正確に知り、既存のライブラリを台無しにする必要がないようにこれを使用することを好みます。もしそうなら、基本的に私が知っているのは、それがmake install
私に知らせる最後のものはアップデートまたは設定ですLD_LIBRARY_PATH
。時には必ずしもそうではありませんLD_RUN_PATH
。
ほとんどの場合、LD_LIBRARY_PATH
後で必要に応じて手動で設定したり、同様の方法でグローバルに設定したりして/etc/bash.bashrc.local
効果がありました。
これは次のことを意味しますmake install
。
Libraries have been installed in:
/usr/local/mfprtest/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
より良い方法がありますか?それとももう少し正式な方法ですか?using ldconfig and ld.so.conf
than using LD_LIBRARY_PATH
and LD_RUN_PATH
, and PATH
?これは特に私自身のコードを書くためのものですが、他のユーザーにも当てはまります。 gmpなど、特定のLinuxバージョンにインストールされているよりも最新のライブラリのさまざまなバージョンに接続したいと思います。 、mpfr、gcc-5.x、gcc-6.x、gcc-7.xなど、手動でインストールされたさまざまなgccバージョンを使用します。
たとえば、デフォルトでインストールされたら、/usr/local/gcc-7.3.0
自分とシステムでホームブルーのC、C ++、またはFortranのソースコードを作成または実行している他の人が/usr/local/gcc-7.3.0
/usr/bin/および/usr/64/にあるシステムストアを使用するしたい。
ベストアンサー1
回避策は、ライブラリディレクトリを(またはファイル)/usr/local/gcc-7.3.0/lib/
に追加し、ユーザーのシェルプロファイルを実行または変更してシステムの/をオーバーライドし、リンカが共有オブジェクトを見つけることができるように別々のエントリを追加することです。/etc/ld.so.conf
/etc/ld.so.conf.d/
ldconfig
LD_LIBRARY_PATH
LD_RUN_PATH
*/lib
ライブラリの追加を開始するとメンテナンスの複雑さが増すので、これを念頭に置いてください。
他のオプションは、リンク内のすべてのファイルをリンクすることです/usr/local/<library>/{bin,lib,include} into /usr/local/{bin,lib,include}
。これは非常に単純化されld.so.conf
たりLD_LIBRARY_PATH
、LD_RUN_PATH
混乱した状況の中で生きる必要があるかもしれません/usr/local/{bin,lib,include}
。
これを行う「公式」の方法は、システムのパッケージマネージャを使用し、選択した場所(など)に配布ライブラリのメンテナンス/usr/lib/
バージョンをインストールすることです/lib
。