これはやや紳士特有なので、その文脈で説明してから、一般的なLinuxマシンに抽象化してみます。
私のマシンがAthlon64の場合、最初は誤ってCHOSTを「i686-pc-linux-gnu」に設定しましたが、注意を払っていませんでした。 「x86_64-pc-linux-gnu」に変更したいのですが。 このためのガイドがあります。 動作しません。
最初のステップは「binutilsを再コンパイルしてからgccを再コンパイルする」です。
示されている問題は次のとおりです。
だから私は以下を試しました:
Gccコンパイルは次の場合に失敗します:
/usr/x86_64-pc-linux-gnu/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
/usr/x86_64-pc-linux-gnu/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc
/usr/x86_64-pc-linux-gnu/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
Thisはglibcエラー(チェーンの完了)です。
そうらしい、それっぽい:
私が試したことがない手順は非常に複雑なので、最初に意見を聞きたかったのですが、次のとおりです。
上記の#4が機能する可能性はありますか?完全に再インストールせずにこれを達成する希望はありますか?
私の知る限り、それは不可能です。ツールチェーンはバキュームには存在せず、相互に関連していることに注意してください。
うまくいくかもしれないのは、新しいインフラストラクチャのクロスコンパイラを構築することですが、私は本当にそれを疑っています-glibcの更新の「原子性」はすべてを壊します。
システムのバックアップと再インストールをお勧めします。
AMD64 stage3 tarballをダウンロードして、gccのコピーを使用してみましたか?
カーネルが64ビットの場合(したがって64ビットバイナリを実行できる場合)、通常の手順に従って、chrootで新しいx86_64Gentooインストールを開始できます。私は以前に同様のことをしました—事実上再インストールしますが、それでも古いシステムを実行しています。インストールする予備のブロックデバイスがない場合は、サブディレクトリを使用してinit=chroot\040/new\040/bin/sinit
で起動するか、最小限の環境にドロップダウンしてディレクトリをシャッフルできます。
カーネルが32ビットの場合は、64ビットカーネルを見つけるか、64ビットへのクロスコンパイラをビルドして64ビットカーネルをビルドし、起動してから上記を参照してください。