GNU/Linux >> Linux の 問題 >  >> Linux

ライブラリの場所をバイナリに指定するにはどうすればよいですか? (Linux)

1 回限りの場合は、変数 LD_LIBRARY_PATH を設定します 検索するディレクトリのコロンで区切られたリストに。これは PATH に似ています ただし、標準のシステム ディレクトリは、環境で指定されたディレクトリの後に追加で検索されます。

LD_LIBRARY_PATH=/usr/local/lib64 ./cart5

ライブラリを非標準の場所に保持し、それ自体を見つけることができないプログラムがある場合は、ラッパー スクリプトを記述できます。

#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
else
  LD_LIBRARY_PATH=/usr/local/lib64
fi
export LD_LIBRARY_PATH
exec /path/to/cart5 "[email protected]"

標準システム ディレクトリのリストは /etc/ld.so.conf に保持されます .最近のシステムでは、このファイルに他のファイルを含めることができます。 include /etc/ld.so.conf.d/*.conf のようなものが含まれている場合 、 /etc/ld.so.conf.d/mala.conf という名前の新しいファイルを作成します 追加するディレクトリが含まれています。 /etc/ld.so.conf を変更した後 またはインクルードされたファイルで、/sbin/ldconfig を実行します 変更を有効にします (これによりキャッシュが更新されます)。

(LD_LIBRARY_PATH FreeBSD、NetBSD、OpenBSD、Solaris、Tru64 など、他の多くの unice にも適用されます。 HP-UX には SHLIB_PATH があります Mac OS X には DYLD_LIBRARY_PATH があります . /etc/ld.so.conf ほとんどの unice に類似のものがありますが、場所と構文はさらに大きく異なります。)


LD_LIBRARY_PATH を避けたい場合は、リンク中にこれを行うこともできます:

gcc -o exename -L/path/to/dynamiclib/ -lnameofLib \
    -Wl,-R/path/to/dynamiclib/ sourceCode1.c ...

-Wl,... は追加のコマンドをリンカーに渡すために使用されます。この場合、-R を使用して、このパスを .so の「デフォルトの検索パス」として保存するようにリンカーに指示します。

私のサイトでは、このような多くの小さなヒントをメモしています:

https://www.thanassis.space/tricks.html


Linux
  1. Linuxでhistoryコマンドを使用する方法

  2. Linux でハードウェア クロックをプログラムで設定するにはどうすればよいですか?

  3. インストールされている glibc ライブラリのバージョンを確認するにはどうすればよいですか?

  1. Linuxgrepコマンドの使用方法

  2. Linuxがメインフレームに登場した経緯

  3. Linux でバイナリ実行可能ファイルを逆アセンブルしてアセンブリ コードを取得する方法は?

  1. Linuxの履歴コマンドの使用方法

  2. Linux で USB デバイスのチップセットを特定するにはどうすればよいですか?

  3. Linux の cp コマンドで正規表現をどのように使用しますか?