ダイナミックライブラリにlinuxを見つけることができない問題を解決するために、

それは、我々は最初の動的ライブラリの特性を理解する必要があり、動的ライブラリを見つけることができないのlinuxの問題になると、動的ライブラリは、共有ライブラリです。

  1. いくつかのライブラリ関数のためのダイナミックリンクライブラリは、期間のランニングに延期ロードさ。
  2. プロセス間でリソースを共有を実現することができます。(共有ライブラリ、したがって動的ライブラリとして知られています)
  3. 一部のプログラムは、アップグレードが容易になります。
  4. でも、本当にリンク負荷は、完全にプログラムコード(番組の呼び出し)で、プログラマによって制御されることができます。

ポイント1に、ライブラリファイルなどの動的、静的ライブラリをプログラムにバイナリ形式でパッケージ化されているようライブラリはありませんが、あなたは、動的に動的ライブラリプログラムをロードするために、この機会に対応するライブラリ関数を呼び出すために、この時間を実行する必要がある時には、上記エルフ実行可能プログラムのために、行わld-linux.soによって、それが持っている、システムだけで、あなたは、システムのダイナミック・ローダ(動的リンカ/ローダ)を必要とする、絶対パスを知らずに動的ライブラリの名前を知っていますメモリにライブラリファイルを見つけるために、ELFファイルDT_RPATHセグメント(制御不能)=「環境変数LD_LIBRARY_PATH =」/etc/ld.so.cacheリストファイル=「ポスト/ libに/と/ usr / libディレクトリを検索します。

我々はそれを行う必要があるので、いずれの順序ダイナミックローダの検索順序に動的ライブラリのディレクトリへの絶対パスで、以下の具体的な方法は、言いました:

  • 方法1:コピーに/ libまたは/ usr / lib、独自の共有ライブラリを生成し、推奨されません
  • 方法2:動的ライブラリシステム環境変数のディレクトリへの絶対パスを追加します。
  • 2.1、動的ライブラリを一時的に(端末閉故障に)環境変数に追加ディレクトリの絶対パス

輸出LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/ホーム/ chiliast /宿題/ day03 /共有/ libに

  • 2.2、DLLが中〜/ .bashrcのまたは/ etc /プロファイルに設定されているディレクトリへの絶対パス(永久)
  • ユーザーレベル:ファイルの追記〜/ .bashrcの最後に、ライブラリのパス

LD_LIBRARY_PATH LD_LIBRARY_PATH = $エクスポート:/ホーム/ chiliast /宿題/ day03 /共有/ libに
ソース〜/ .bashrcや〜/ .bashrcの構成の検証。

  • システムレベル:/ etc / profileファイルのトレーラーへの追加ライブラリのパス

LD_LIBRARY_PATH LD_LIBRARY_PATH = $エクスポート:/ day03 /共有/ libに/ホーム/ chiliast /宿題
ソースは/ etc /または./etc/profile検証構成プロファイル

  • 方法3:DLLファイル/etc/ld.so.cache(2段階実現)ディレクトリへの絶対パスを追加

編集は/etc/ld.so.confファイル、ライブラリファイルのディレクトリへのパスを追加
にldconfigを実行する(スーパーユーザー権限を必要とする)、コマンドは/etc/ld.so.cacheファイルを再構築します

公開された21元の記事 ウォンの賞賛5 ビュー10000 +

おすすめ

転載: blog.csdn.net/icodestechnology/article/details/90549515