「インストール - GLIBC」の版間の差分

ナビゲーションに移動 検索に移動
121行目: 121行目:
<br>
<br>
その1つが、ld-linux.so.2ライブラリであり、libc.so.6ライブラリと一致しなければ、エラーが発生する。<br>
その1つが、ld-linux.so.2ライブラリであり、libc.so.6ライブラリと一致しなければ、エラーが発生する。<br>
ld-linux.so.2ライブラリへの絶対パスは、リンク時に実行ファイルにハードコードされており、<br>
ld-linux.so.2ライブラリへの絶対パスは、リンク時に実行ファイルにハードコードされており、リンク後は簡単に変更できない。
リンク後に簡単に変更することはできない。(patchelfを使用することで可能である)<br>
([http://nixos.org/patchelf.html patchelf]を使用することで可能である)<br>
<br>
<br>
新しくインストールしたGLIBCで動作するソフトウェアを使用する場合、以下のようにビルドする。<br>
新しくインストールしたGLIBCで動作するソフトウェアを使用する場合、以下のようにビルドする。<br>
  ./configure --prefix=<インストールするソフトウェアのディレクトリ> \
  ./configure --prefix=<インストールするソフトウェアのディレクトリ> \
  LDFLAGS="-Wl,-rpath <GLIBCのインストールディレクトリ> -Wl,-dynamic-linker=<GLIBCのインストールディレクトリ>/lib64/ld-linux.so.2"
  LDFLAGS="-Wl,-rpath <GLIBCのインストールディレクトリ>/lib64 -Wl,--dynamic-linker=<GLIBCのインストールディレクトリ>/lib64/ld-linux.so.2"
<br>
<br>
リンカオプションのrpathオプションは、ランタイムローダがGLIBCのインストールディレクトリにあるライブラリを検索する設定である。<br>
リンカオプションの<code>rpath</code>オプションは、ランタイムローダがGLIBCのインストールディレクトリにあるライブラリを検索する設定である。<br>
-dynamic-linkerオプションは、ld-linux.so.2へのパスをソフトウェアに焼き付ける設定である。<br>
<code>dynamic-linker</code>オプションは、ld-linux.so.2へのパスをソフトウェアに焼き付ける設定である。<br>
(<code>dynamic-linker</code>オプションは、ELF実行ファイル用にコンパイルする場合にのみ動作する)<br>
<br>
<br>
ソフトウェアを再リンクする場合、以下の方法がある。<br>
ソフトウェアを再リンクする場合、以下の方法がある。<br>
* 適切なchroot環境を設定する。
* 適切なchroot環境を設定する。
* rtldiとバイナリエディタを使用する。
* [http://bitwagon.com/rtldi/rtldi.html rtldi]とバイナリエディタを使用する。
* patchelfを使用する。
* [http://nixos.org/patchelf.html patchelf]を使用する。<br>既にビルドされたELFのパスとインタプリタを変更することができる。
* 新しいld-linux.so.2を直接実行して、パラメータとしてソフトウェアのパスを渡す。<br>ソフトウェアを再ビルドすることなく、ld.-linux.so.2を置き換えることができる。
*: <code>/<GLIBCのインストールディレクトリ>/lib64/ld-linux.so.2 \</code>
*: <code>--library-path <GLIBCのインストールディレクトリ>/lib64:/<GLIBCのインストールディレクトリ>/usr/lib64 \</code>
*: <code>/<ソフトウェアのインストールディレクトリ>/<ソフトウェアの実行ファイル></code>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]]
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]]

案内メニュー