web-dev-qa-db-ja.com

リンカ共有ライブラリのデフォルトパス/lib64/libc.so.6、/lib64/libc.so.6をリダイレクトする方法:バージョン `GLIBC_2.14 'が見つかりません

私のLinuxマシンはx86_64-redhat-linuxです。

しかし、私は別のアームツールチェーンを使用していますaarch64-linux-gnu-gccこのマシンでビルドします(私はしませんこのマシンでビルドしたものを実行する必要があります。ビルドするだけなので、armツールチェーンを使用してビルドすることをお勧めします)

次のエラーが表示されます。

aarch64-linux-gnu-gcc: /lib64/libc.so.6: 
version `GLIBC_2.14' not found (required by aarch64-linux-gnu-gcc)

したがって、現在のデフォルトの共有ライブラリパスは/lib64/libc.so.6を指しています。このマシンのユーザーは私だけではないので、更新したくありません。自分のlibc.so.6を使用するにはどうすればよいですか。検索パスを別のディレクトリにリダイレクトしますか?

1
hellocoding

問題

GLIBC 2.12がインストールされており、OPのタイトルにあるように、彼が使用しようとしているクロスコンパイルツールチェーンにはGLIBC> 2.14が必要です。 OPは、システムを更新できないため、彼も制約を受けていると述べています。

警告

以下のステップ3のリストは、changerootを構築するために使用されます。可能であれば、ディストリビューションリポジトリから含まれているパッケージを使用してください。リポジトリ内の最新バージョンがchangerootの外部にインストールされているバージョンと等しい場合は、手順3を停止し、 RPMFind などのオンラインパッケージ検索を使用して新しいバージョンを検索し、続行します。 changrootの外部に新しいバージョンまたはオンラインバージョンをインストールしないでください。これはシステムの破損を引き起こしますが、私は責任を負いません!

解決

GLIBCのバージョンを並べてインストールすることはできないため、OPはARMクロスコンパイラをインストールするために changeroot jail をビルドする必要があります。 Wikipedia- Chroot 。これを行うには、次の手順に従ってください。

  1. Changerootのディレクトリを作成します:_mkdir -pv $HOME/newroot_
  2. オーバーライドを作成して、chrootにインストールするRPMパッケージをリダイレクトします:_export ROOT=$HOME/newroot && echo $ROOT_。興味がある場合は、手順4を参照してください。
    • これはまもなく非常に重要になるため、新しい変数をエコーし​​てください。
  3. Changerootに推奨されるrpmパッケージをダウンロードします(これらはパッケージ名です):_cd $ROOT && mkdir -v download && cd download_
    • セットアップ
    • ファイルシステム
    • ベースシステム
    • ldconfig
    • glibc <-上記の警告に注意してください。そうしないと、この作業を無料で行うことになります。
    • mktemp
    • termcap
    • ncurses
    • 情報
    • fileutils
    • bash && libtermcap
    • gdbm
    • tcsh
    • Perl
    • chkconfig
    • textutils
    • cracklib
    • cracklib-dicts
    • pwdb
    • glib
    • gawk
    • pam --nodeps
    • シャドウユーティリティ
    • スラング
    • util-linux --nodeps
    • sh-utils
    • zsh
    • sed
    • bzip2
    • popt
    • zlib
    • rpm
    • クロスコンパイルツールチェーンとその依存関係
  4. 次のコマンドを使用して、上記のリストをインストールします_rpm -i --root=$ROOT packagename_ _--root_引数に注意してください。これは、RPMのデフォルトのインストール動作を上書きします。リスト内のパッケージに、bash && libtermcapなどの追加機能が含まれていることに注意してください。 _--root_引数を含め、リストに記載されているとおりにrpm-iコマンドを実行してください。上記の例では、libtermcapはbashと同じディレクトリにインストールされます。
  5. 最後に、chroot $ROOT && export PS1="(chroot) $PS1"があります。

参照

上記の手順は RedHat Linux 6.2でchroot環境をセットアップする方法-FTPおよびWebサービスの場合

1
eyoung100