sudo apt update sudo apt install build-essential libgmp-dev libmpfr-dev libmpc-dev texinfo flex bison libisl-dev wget curl
mkdir $HOME/gcc-build cd $HOME/gcc-build mkdir gcc-15-build
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
cd $HOME/gcc-build/gcc-15.1.0 ./contrib/download_prerequisites
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
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
cd $HOME/gcc-build/gcc-15-build make install
Aby użyć wybudowanego w ten sposób GCC razem z wrapperem musl-gcc
, musimy go zainstalować i wyeksportować ścieżkę do nowego GCC.
sudo apt update sudo apt install musl-tools
Jeśli potrzebujesz, możesz ten eksport wrzucić do .bashrc
lub innego miejsca inicjalizacji twojego shella.
export REALGCC=$HOME/gcc-15/bin/gcc
mkdir $HOME/test-c cd $HOME/test-c
#include <stdio.h> const unsigned char pliczek[] = { #embed "test.txt" suffix(,0) }; int main(){ printf("%s\n", pliczek); return 0; }
hello, world!
musl-gcc -static -O2 -s -std=c23 test.c -o test