gcc
Buduję sobie gcc 4.6.1 na Linuksie.
Spis treści |
[edytuj] Środowisko
Ponieważ chcę to zainstalować "z boku", a konkretnie w katalogu ~/opt, więc robię skrypt env.sh ustawiający odpowiednie zmienne środowiska:
export prefix=$HOME/opt export destdir=$HOME/opt/stow export PATH=$prefix/bin:$PATH export LD_LIBRARY_PATH=$prefix/lib:$prefix/lib64${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH export LIBRARY_PATH=$prefix/lib:$prefix/lib64${LIBRARY_PATH+:}$LIBRARY_PATH export C_INCLUDE_PATH=$prefix/include${C_INCLUDE_PATH+:}$C_INCLUDE_PATH export CPLUS_INCLUDE_PATH=$prefix/include${CPLUS_INCLUDE_PATH+:}$CPLUS_INCLUDE_PATH
($prefix/lib64 dopisałem już po zbudowaniu całości, okazało się niezbędne, by poszło "make check" w jednej z bibliotek, których wymagał gcc.)
Skrypt ten należy wciągnąć do bieżącego basha (. env.sh) przez przystąpieniem do budowania kompilatora oraz bibliotek, od których zależy, a potem, po zbudowaniu, prawdopodobnie też będzie trzeba ustawiać te zmienne by móc nowego kompilatora używać.
[edytuj] Wymagania
Wymagania opisane w pliku INSTALL/prerequisites.html [1], znajdującym się w paczce ze źródłami gcc.
- gmp-4.3.2
./configure --prefix=$prefix --enable-cxx && make && make install
- mpfr-2.4.2 lub nowszy (użyłęm 3.1.0)
./configure --prefix=$prefix --with-gmp=$prefix && make && make install
- mpc-0.8.1 lub nowszy (użyłem 0.9)
./configure --prefix=$prefix --with-gmp=$prefix --with-mpfr=$prefix && make && make install
- ppl-0.11 (uzyłem 0.11.2)
./configure --prefix=$prefix --with-gmp-prefix=$prefix && make && make install
- cloog-ppl 0.15 (użyłem 0.15.11; dopuszczalne jest też 0.16 ale z dodatkowymi opcjami)
./configure --prefix=$prefix --with-ppl=$prefix --with-gmp=$prefix && make && make install
Oczywiście po zbudowaniu każdego z tych pakietów warto zapuścić testy modułowe (make check), aby się upewnić, że wszystko działa, jak należy.
[edytuj] Kompilacja kompilatora
mkdir gcc-objdir
cd gcc-objdir
$gcc_srcdir/configure --prefix=$prefix --with-gmp=$prefix --with-mpfr=$prefix --with-mpc=$prefix \
--with-ppl=$prefix --with-cloog=$prefix --without-local-prefix
[edytuj] make check
Po zbudowaniu i zainstalowaniu, zabrałem się za wykonywanie testów modułowych. O ile poprzednia instalacja (bardzo zbliżona, o ile nie identyczna) na maszynie 32-bitowej przetestowała się bez zastrzeżeń, to tarez, na moim 64-bitowym Debianie pojawiły się pewne błędy:
- gmp-4.3.2
rootrem.c:338: GNU MP assertion failed: bn >= qn
/bin/sh: line 4: 32613 Przerwane ${dir}$tst
FAIL: reuse
rootrem.c:338: GNU MP assertion failed: bn >= qn
/bin/sh: line 4: 32638 Przerwane ${dir}$tst
FAIL: t-root
- gcc-4.6.1 - samego kompilatora nie przetestowałem, bo nie chciało mi się już ściągać i składać kolejnych paczek.[2]