ホームページ >運用・保守 >Linuxの運用と保守 >Linux ダイナミック ライブラリが見つからない場合はどうすればよいですか?

Linux ダイナミック ライブラリが見つからない場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2020-05-25 10:13:083093ブラウズ

Linux ダイナミック ライブラリが見つからない場合はどうすればよいですか?

Linux ダイナミック ライブラリが見つからない場合はどうすればよいですか?

Linux がダイナミック ライブラリを見つけられない問題の解決策

ダイナミック ライブラリは共有ライブラリです。動的ライブラリを見つけるには、まず動的ライブラリの機能を理解する必要があります:

推奨: "linux チュートリアル"

# 動的ライブラリはリンクを延期します一部のライブラリ関数のプログラム動作期間へのロード。

# プロセス間でのリソース共有を実現できます。 (そのため、動的ライブラリは共有ライブラリとも呼ばれます)

#● 一部のプログラムのアップグレードを簡単にします。

# リンクの読み込みも、プログラマがプログラム コード (明示的な呼び出し) で完全に制御できます。

上記の最初の点からわかるように、ダイナミック ライブラリは、静的ライブラリのようにライブラリ ファイルをバイナリ形式でプログラムにパッケージ化するのではなく、プログラムの実行時から対応するライブラリ関数が実行されるまで動的にパッケージ化します。ダイナミック ライブラリをロードします。この時点では、システムはダイナミック ライブラリの名前だけを知っていますが、絶対パスは知りません。この時点では、システム ダイナミック ローダー (ダイナミック リンカー/ローダー) が必要です。 elf 実行可能プログラムの場合、ld-linux.so によって使用されます。完了するには、elf ファイルの DT_RPATH セクションを連続的に検索します (制御不能) => 環境変数 LD_LIBRARY_PATH => /etc/ld.so.cache ファイル リスト => /lib/ および /usr/lib ディレクトリでライブラリ ファイルを見つけてロードします。

次に、ダイナミック ライブラリが配置されているディレクトリの絶対パスをダイナミック ローダーの検索シーケンスの任意のシーケンスに追加する必要があります。具体的な実装方法は次のとおりです。方法 1: 独自の共有ライブラリの /lib または /usr/lib にコピーします。推奨されません

方法 2: ダイナミック ライブラリが配置されているディレクトリの絶対パスをシステム環境変数に追加します

2.1. ダイナミックライブラリの追加 環境変数にディレクトリの絶対パスを一時的に追加します(ターミナルを閉じると無効になります)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib

2.2. ディレクトリの絶対パスを設定しますダイナミック ライブラリは ~/.bashrc または /etc/profile にあります (永続的に有効)

ユーザー レベル: ~/.bashrc ファイルの末尾にライブラリ パスを追加します

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib

source ~/.bashrc または . ~/.bashrc を使用して構成を有効にします

システム レベル: /etc/profile ファイルの末尾にライブラリ パスを追加します

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib

source /etc/profileまたは ./etc/profile を使用して設定を有効にします。

方法 3: ダイナミック ライブラリが配置されているディレクトリの絶対パスを /etc/ld.so.cache ファイルに追加します (2 段階の実装)

/etc/ld.so.conf ファイルを編集し、ライブラリ ファイルが配置されているディレクトリへのパスを追加します。

##ldconfig を実行します (スーパー ユーザーのアクセス許可が必要です)。このコマンドは /etc/ld.so.conf ファイルを再構築します。 etc/ld.so.cache ファイル

以上がLinux ダイナミック ライブラリが見つからない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。