rootアクセス権のないシステムがありますが、現在のバージョンのGCC(4.7.2)をにインストールする必要があります。
システムはLinux2.6.18のx86_64ビルドを実行しており、すでにGCC 4.1を備えています(--versionはそれを使用してビルドされたと言っていますが、C ++はサポートされていません)。
編集5:この時点で、以下の手順は私が試したものの1つにすぎません。それ以来、私は数回掃除を始めました。必要なすべてのスイッチを使用してすべてを作成するために必要な正確な順序を詳しく説明してくれる人を探しています。
これは私がこれまでに行ったプロセスです(ここで、ROOTは私のホームディレクトリ内のフォルダです)
make-3.82>./configure --prefix=$ROOT && make && make install && hash -r
binutils-2.23>./configure --prefix=$ROOT && make && make install
autoconf-2.69>./configure --prefix=$ROOT && make && make install
automake-1.9>./configure --prefix=$ROOT && make && make install
flex-2.5.37>./configure --prefix=$ROOT && make && make install
libunwind-1.1>./configure --prefix=$ROOT && make && make install
gcc-4.7.2-scratch>../gcc-4.7.2/configure --prefix=$ROOT \
--disable-multilib --disable-nls --enable-languages=c,c++ \
&& make && make install && hash -r
ncurses-5.9>./configure --prefix=$ROOT && make && make install
texinfo-4.13>./configure --prefix=$ROOT && make && make install
glibc-2.14-scratch>touch $ROOT/etc/ld.so.conf
http://sourceforge.net/apps/trac/unattended/wiki/ModifyingTheBootDisk#PatchGLibcからのパッチでglibcにパッチを適用(2.14の行番号を修正)
glibc-2.14-scratch>../glibc-2.14/configure --prefix=$ROOT \
--with-headers=$3_3_4_HEADERS && make && make install
私が追加したフラグは、を取り除くことでしundefined reference to '__isoc99_sscanf'
た。それを修正するために実際にどのフラグの組み合わせが必要だったかはわかりませんが、これらのフラグの問題は修正されました。
gcc-4.7.2-scratch2>../gcc-4.7.2/configure --prefix=$ROOT \
--disable-multilib --disable-nls --enable-languages=c,c++ \
CPPFLAGS="-I$ROOT/include" CFLAGS="-g -O2 -lc" \
CXXFLAGS="-g -O2 -lc" LDFLAGS="-L$ROOT/lib \
-L$ROOT/lib64" && make && make install
GCCビルド中にこのエラーが発生します:
build/genmddeps ../../gcc-4.7.2/gcc/config/i386/i386.md > tmp-mddeps
build/genmddeps: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by build/genmddeps)
/ lib64のlibcはバージョン2.5であるため、エラーは理にかなっていますが、$ ROOT/libにインストールされたものをGCCで使用する方法がわかりません。
編集1:-rpathを追加しても効果はありませんでしたが、libディレクトリをLD_RUN_PATHとLD_LIBRARY_PATHに追加しました。これらのセットでは、エラーが発生したため、何も実行できませんでした[program_name]: error while loading shared libraries: /home/mrambiguous/root/lib/libc.so.6: ELF file OS ABI invalid
もう1つの奇妙な点は、-rpathの提案を試したときに、認識されないコマンドラインオプション(-Vなど)についてGCCからエラーが発生し始めたことです。システムのGCC4.1を使用するように設定する必要がありました。GCCの最初のビルドが何らかの理由で破損したのか、それともそもそも使用されていたのかはわかりません。
編集2:vimでlibc.so.6を開いて、プレーンテキストでABIに関する何かを見つけることができるかどうかを確認しました。そこには、著作権情報が含まれています。libc ABIs: UNIQUE IFUNC
また、GCC4.7.2が同じテキストブロックで機能していたことも確認します。Compiled by GNU CC version 4.7.2
編集3:$ ROOTを削除し、すべてを再インストールしました。-Vと-qversionが有効なオプションとして認識されないという同じ問題があります。
編集4:を使用してELFヘッダーを編集しようとしbrandelf -t SVR4 libc.so.6
ましたが、新しいエラーが発生しますunexpected PLT reloc type 0x25