Files
yourpart3/install-gcc15-ubuntu22.sh

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!"