とをgcc
含む新しいものをコンパイルしてみました。ルートにはできないので、次の変数をすべてインストールしたかったのです。binutils
glibc
~/local
PREFIX=~/local && export PREFIX
PATH=~/local/bin:$PATH && export PATH
次の構成を使用してbinutis
、gcc
および(正確にこの順序で)ビルドしました。glibc
../binutils-2.22/configure --prefix=$PREFIX --with-sysroot
../gcc-4.7.3/configure --prefix=$PREFIX
CC='gcc --sysroot=~/local' ../glibc-2.15/configure --prefix=$PREFIX
私の考えは、最初にコンパイルしbinutils
てから、gcc
新しい新しいbinutilsにコンパイルし、最後に両方をコンパイルすることglibc
です(私のシステムには必要ありませんglibc
)/usr/lib
。
ただし、正しくコンパイルしてインストールした後に次の設定binutils
をgcc
行うgcc
と、単純なプログラムはコンパイルされませんglibc
。
int main() { return 0; }
出力(短縮):
> gcc --sysroot=~/local/ test.cpp -o test
ld: cannot find crt1.o: No such file or directory
ld: cannot find crti.o: No such file or directory
ld: cannot find -lc
ld: cannot find crtn.o: No such file or directory
ただし、以下はファイルを表示しません。
find ~/local -name crti.o
私の設定に問題がありますか?
私のシステムはUbuntu 12.04 64ビット(「正確に」)を実行しているサーバーですが、これはシステムとは関係がないと思います。 openSuSE 12.2にはこれらの組み合わせがあるため、3つのツールバーコンポーネントのバージョンは互いに一致する必要があります。
答え1
libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes
テストプログラムをビルドして実行しようとしたときに窒息する構成を避けるには、glibcに設定コマンドを追加する必要があります。問題はcrt1.o
、crti.o
ファイルがlibc.{a,so}
すべてcrtn.o
インストールされていないglibcライブラリの一部であることです。
Linuxで最初から学ぶ:glibcに関する記事