====== Kompilacja GCC 15.1 na Ubuntu 24.10 dla C23 + wrapper musl ======
===== Wymagane pakiety =====
sudo apt update
sudo apt install build-essential libgmp-dev libmpfr-dev libmpc-dev texinfo flex bison libisl-dev wget curl
===== Przygotowanie środowiska =====
==== Utworzenie katalogów ====
mkdir $HOME/gcc-build
cd $HOME/gcc-build
mkdir gcc-15-build
==== Pobranie paczki z GCC-15.1 ====
Dostępne mirrory są pod adresem [[https://gcc.gnu.org/mirrors.html]]
cd $HOME/gcc-build
wget https://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-15.1.0/gcc-15.1.0.tar.xz
tar xvf gcc-15.1.0.tar.xz
==== Przygotowanie wymogów ====
cd $HOME/gcc-build/gcc-15.1.0
./contrib/download_prerequisites
===== Budowanie GCC-15.1 =====
==== Konfiguracja ====
W tym wypadku konfigurujemy budowanie tak, aby skompilowane binarki trafiły do ''$HOME/gcc-15/bin''. Pozwoli nam to odizolować instalację od systemu.
cd $HOME/gcc-build/gcc-15-build
$HOME/gcc-build/gcc-15.1.0/configure \
--prefix=$HOME/gcc-15 \
--enable-languages=c \
--disable-multilib
==== Kompilacja ====
Szczerze zalecam wybranie wszystkich dostępnych rdzeni i zostawienie tego procesu na noc. Zacząłem kompilacje wieczorem i wytrwałem tylko do północy, aż stwierdziłem że zostawiam ten proces na noc. **Uwaga! W moim przypadku skompilowane elementy zajęły 11GB miejsca na dysku!**
cd $HOME/gcc-build/gcc-15-build
make -j6
==== Instalacja ====
cd $HOME/gcc-build/gcc-15-build
make install
===== Wrapper ''musl-gcc'' =====
Aby użyć wybudowanego w ten sposób GCC razem z wrapperem ''musl-gcc'', musimy go zainstalować i wyeksportować ścieżkę do nowego GCC.
==== Instalacja ====
sudo apt update
sudo apt install musl-tools
==== Konfiguracja ====
Jeśli potrzebujesz, możesz ten eksport wrzucić do ''.bashrc'' lub innego miejsca inicjalizacji twojego shella.
export REALGCC=$HOME/gcc-15/bin/gcc
===== Testowanie =====
==== Przygotowanie środowiska ====
mkdir $HOME/test-c
cd $HOME/test-c
==== Plik ''test.c'' ====
#include
const unsigned char pliczek[] = {
#embed "test.txt" suffix(,0)
};
int main(){
printf("%s\n", pliczek);
return 0;
}
==== Plik ''test.txt'' ====
hello, world!
==== Kompilacja ====
musl-gcc -static -O2 -s -std=c23 test.c -o test