diff options
Diffstat (limited to 'chapter8/gcc.sh')
-rw-r--r-- | chapter8/gcc.sh | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/chapter8/gcc.sh b/chapter8/gcc.sh index 7a693aa..7b4df3b 100644 --- a/chapter8/gcc.sh +++ b/chapter8/gcc.sh @@ -1,3 +1,46 @@ #!/bin/bash +case $(uname -m) in + x86_64) + sed -e '/m64=/s/lib64/lib/' \ + -i.orig gcc/config/i386/t-linux64 + ;; +esac +mkdir -v build +cd build || exit 1 + +../configure --prefix=/usr \ + LD=ld \ + --enable-languages=c,c++ \ + --disable-multilib \ + --disable-bootstrap \ + --with-system-zlib + +make + +make -j1 install +rm -rf /usr/lib/gcc/"$(gcc -dumpmachine)"/"${VERSION}"/include-fixed/bits/ + +chown -v -R root:root \ + /usr/lib/gcc/*linux-gnu/"${VERSION}"/include{,-fixed} + +ln -sv ../usr/bin/cpp /lib + +ln -sfv ../../libexec/gcc/"$(gcc -dumpmachine)"/"${VERSION}"/liblto_plugin.so \ + /usr/lib/bfd-plugins/ + +echo 'int main(){}' > dummy.c +cc dummy.c -v -Wl,--verbose &> dummy.log +readelf -l a.out | grep ': /lib' + +grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log +grep -B4 '^ /usr/include' dummy.log +grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' +grep "/lib.*/libc.so.6 " dummy.log +grep found dummy.log + +rm -v dummy.c a.out dummy.log + +mkdir -pv /usr/share/gdb/auto-load/usr/lib +mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib |