Ehrweb.de

Perl und Tk auf dem Mac (Apple Silicon)

Diese Hilfe beschreibt typische Probleme beim Installieren des CPAN-Moduls Tk (Perl/Tk, nicht Tcl/Tk allein) unter macOS mit Apple Silicon (arm64) und wie Sie sie mit Homebrew und einer sauberen Toolchain in der Regel lösen.

Was schiefgehen kann

Voraussetzungen (Homebrew & Compiler)

  1. Xcode Command Line Tools installieren (Compiler clang):
    xcode-select --install
  2. Homebrew für Apple Silicon nutzen (Präfix meist /opt/homebrew).
  3. Empfehlung: Perl von Homebrew für ein durchgängiges arm64-Setup:
    brew install perl
                brew install cpanminus
    Prüfen:
    uname -m                 # arm64
                file "$(which perl)"     # arm64

Lösung: System-libjpeg sichtbar machen (Homebrew)

Damit Perl/Tk nicht das Bundled-libjpeg bauen muss, sollte libjpeg von Homebrew dort liegen, wo Tk es erwartet (/usr/local/include und /usr/local/lib), oder Sie stellen die Pfade so ein, dass der integrierte Test -ljpeg findet.

Variante A (häufig erfolgreich): jpeg installieren und Symlinks nach /usr/local (einmalig, benötigt Administratorrechte):

brew install jpeg
            sudo mkdir -p /usr/local/include /usr/local/lib
            
            JPEG_PREFIX="$(brew --prefix jpeg)"
            sudo ln -sf "$JPEG_PREFIX/include/jpeglib.h"  /usr/local/include/jpeglib.h
            sudo ln -sf "$JPEG_PREFIX/include/jmorecfg.h" /usr/local/include/jmorecfg.h
            sudo ln -sf "$JPEG_PREFIX/include/jerror.h"   /usr/local/include/jerror.h
            [ -f "$JPEG_PREFIX/include/jconfig.h" ] && sudo ln -sf "$JPEG_PREFIX/include/jconfig.h" /usr/local/include/jconfig.h
            
            sudo ln -sf "$JPEG_PREFIX/lib/libjpeg.dylib" /usr/local/lib/libjpeg.dylib
            sudo ln -sf "$JPEG_PREFIX/lib/libjpeg.a"     /usr/local/lib/libjpeg.a

Wenn cpanm die Meldung in Richtung „Using system's -ljpeg“ zeigt, wird der problematische JPEG-Unterbuild übersprungen.

Variante B: Vor dem Build aggressive Umgebungsvariablen entfernen, die ein altes configure verwirren:

unset CPPFLAGS LDFLAGS CFLAGS CXXFLAGS
            export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
            cpanm Tk

Tcl/Tk-Bibliotheken (optional)

Für die eigentliche Tk-GUI nutzt Perl/Tk eigene Quellen; auf dem Mac kann zusätzlich tcl-tk von Homebrew helfen, wenn Header/Libs gesucht werden:

brew install tcl-tk

Bei Bedarf vor dem CPAN-Build (Beispiel, Pfade an Ihre brew --prefix tcl-tk anpassen):

TCL_PREFIX="$(brew --prefix tcl-tk)"
            export PATH="$TCL_PREFIX/bin:$PATH"
            export PKG_CONFIG_PATH="$TCL_PREFIX/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"

Modul installieren und testen

cpanm Tk
            perl -MTk -e 'print "Tk ok\n"'

Minimalbeispiel (Fenster mit Text und Beenden-Button) finden Sie z. B. im Projekt als hello_world_tk.pl.

Hinweis: Diese Anleitung zielt auf Perl/Tk ab. Eine reine Tcl/Tk-Variante mit dem Programm wish ist unabhängig vom CPAN-Modul Tk.