Table of Contents

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 <stdio.h>
 
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