90 lines
2.9 KiB
Bash
Executable File
90 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# GCC 15 Installation für Ubuntu 22.04
|
|
# Verwendet verschiedene Quellen um GCC 15 zu bekommen
|
|
|
|
set -euo pipefail
|
|
|
|
# Farben
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
|
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
|
|
log_info "Installiere GCC 15 für Ubuntu 22.04..."
|
|
|
|
# Option 1: Ubuntu Toolchain PPA (manchmal verfügbar)
|
|
log_info "Versuche Ubuntu Toolchain PPA..."
|
|
apt update
|
|
apt install -y software-properties-common
|
|
|
|
# Füge verschiedene PPAs hinzu
|
|
add-apt-repository -y ppa:ubuntu-toolchain-r/test 2>/dev/null || log_warning "PPA bereits hinzugefügt oder nicht verfügbar"
|
|
add-apt-repository -y ppa:ubuntu-toolchain-r/ppa 2>/dev/null || log_warning "PPA bereits hinzugefügt oder nicht verfügbar"
|
|
|
|
apt update
|
|
|
|
# Versuche GCC 15 zu installieren
|
|
if apt install -y gcc-15 g++-15 2>/dev/null; then
|
|
log_success "GCC 15 erfolgreich über PPA installiert"
|
|
GCC15_AVAILABLE=true
|
|
else
|
|
log_warning "GCC 15 nicht über PPA verfügbar"
|
|
GCC15_AVAILABLE=false
|
|
fi
|
|
|
|
# Option 2: Snap (falls PPA nicht funktioniert)
|
|
if [ "$GCC15_AVAILABLE" = false ]; then
|
|
log_info "Versuche GCC 15 über Snap..."
|
|
if command -v snap &> /dev/null; then
|
|
if snap install gcc --classic 2>/dev/null; then
|
|
log_success "GCC über Snap installiert"
|
|
# Prüfe Version
|
|
SNAP_GCC_VERSION=$(snap run gcc --version | head -1)
|
|
log_info "Snap GCC Version: $SNAP_GCC_VERSION"
|
|
else
|
|
log_warning "GCC über Snap nicht verfügbar"
|
|
fi
|
|
else
|
|
log_info "Snap nicht installiert, installiere es..."
|
|
apt install -y snapd
|
|
if snap install gcc --classic 2>/dev/null; then
|
|
log_success "GCC über Snap installiert"
|
|
else
|
|
log_warning "GCC über Snap nicht verfügbar"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Option 3: Compile from Source (letzte Option)
|
|
if [ "$GCC15_AVAILABLE" = false ]; then
|
|
log_info "GCC 15 nicht verfügbar. Verwende GCC 11 (Standard für Ubuntu 22.04)"
|
|
apt install -y gcc g++
|
|
|
|
log_info "Verfügbare Compiler:"
|
|
gcc --version | head -1
|
|
g++ --version | head -1
|
|
|
|
log_warning "Der Code verwendet nur C++17 Features, daher ist GCC 11 ausreichend"
|
|
log_info "Falls Sie trotzdem GCC 15 brauchen, können Sie es aus dem Quellcode kompilieren"
|
|
fi
|
|
|
|
# Setze GCC 15 als Standard (falls verfügbar)
|
|
if [ "$GCC15_AVAILABLE" = true ]; then
|
|
log_info "Setze GCC 15 als Standard..."
|
|
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-15 100
|
|
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-15 100
|
|
|
|
log_success "GCC 15 ist jetzt der Standard-Compiler"
|
|
gcc --version | head -1
|
|
g++ --version | head -1
|
|
fi
|
|
|
|
log_success "Compiler-Installation abgeschlossen!"
|