====== 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