git als static binary compilieren

GIT

Was ist eine „static binary“?

Während der Übersetzung eines Quellcodes in ein ausführbares Programm verknüpft der Compiler die ausführbare Datei des Programms, um später bei der Ausführung des Programms Arbeitsspeicher zu sparen, mit „shared dynamic libraries“.

Diese Bibliotheken sind eine Sammlung von Funktionen welche von mehreren Programmen geteilt verwendet werden um bestimmte Aufgaben zu zu erfüllen. Durch die gemeinsame Nutzung dieser Bibliotheken kann der Arbeitsspeicher des Computers geschont werden, da nur eine Kopie der Bibliothek für viele verschiedene Programme im Speicher geladen sein muss.

Um ein unerwartetes Verhalten von Programmen zu vermeiden, ist es manchmal unumgänglich das Programm mit einer bestimmten Version einer Bibliothek zu Übersetzen. Auch um die Portabilität eines Programms zu verbessern ist es wichtig die Abhängigkeit vom vorhanden sein einer dynamischen Bibiothek zu vermeiden.
In Linux Systemen sorgt ein Paketmanager dafür, dass Versionsabhängigkeiten korrekt erfüllt werden. Wenn Du auf einem Computer arbeitest über den Du keine Administrative Kontrolle besitzt kannst Du die Version der verwendeten Bibliothek nicht bestimmen oder eine aktualisiert verhindern.
Programme können, wenn s
ie mit „shared dynamic libraries“ übersetzt wurden nur auf andere Computer übertragen werden auf der, die gleiche Prozessorarchitektur und die gleichen Bibliotheken verfügbar sind.
Falls die Bibliotheken des Computers auf den das Programm übertragen wurde aktualisiert werden, eine Bibliothek entfernt wird oder eine der Bibliotheken
auf dem Zielrechner werden kompromittiert oder durch bösartige Versionen ersetzt. Hier kommt das bauen einer „static binary“ ins Spiel.
Wie wird GIT als „static binary“ übersetzt?

in diesem Beispiel gehe ich davon aus das die NAS gemäß dieser Anleitung bereits mit dem notwendigen Buildsystem eingerichtet wurde. Im Anschluss kann die entstehende Binärdatei von GIT auf allen identischen ARM Prozessoren verwendet werden.
Die aktuellste GIT Version kann auf http://git-scm.com gefunden werden.

Folgende 3 Schritte sind auszuführen:

1) GIT Quellcode herunterladen, entpacken und in das GIT Buildverzeichnis wechseln:

2) Die Compilervariablen setzen und git mittels configure konfigurieren um in ein separates Verzeichnis zu übersetzt zu werden:

3) git übersetzen:

In das Zielverzeichnis installieren

4) Prüfe das GIT so wie erwartet funktioniert

Scan to Donate Bitcoin to der_metzger
Did you like this?
Tip der_metzger with Bitcoin

Sparkleshare als alternative zu „STRATO HiDrive“, Dropbox, „Google Drive“ oder SkyDrive

Linux Server für die Nutzung mit Sparkleshare vorbereiten:
In die Datei „authorized_keys“

git installieren und das Homeverzeichnis des Benutzers als git-Repository anlegen:

anschließend die Synchronisation testen:

Windows Client

Nun noch den Windows Client herunter laden:

https://github.com/hbons/SparkleShare/downloads

Und nach der Einrichtung angeben, dass man einen eigenen Server verwenden möchte

Scan to Donate Bitcoin to der_metzger
Did you like this?
Tip der_metzger with Bitcoin

Aktualisieren von FFmpeg und x264

FFmpeg

Um ffmpeg, x264, libx264-dev und yasm zu aktualisieren, wenn diese zuvor mit diese Anleitung eingerichtet wurde müssen diese zuerst deinstalliert werden:
sudo apt-get remove yasm ffmpeg x264 libx264-dev

Jetzt ein Paket nach dem anderen bereinigen, aktualisieren und neu Übersetzen:

yasm

cd /usr/src/yasm
make distclean
git pull
./autogen.sh
./configure --disable-nls --prefix=/usr
make
sudo checkinstall --pkgname=yasm --pkgversion="$(cat YASM-VERSION-FILE)" \
--backup=no --deldoc=yes --fstrans=no --default

x264

cd /usr/src/x264
make distclean
git pull
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes --fstrans=no --default

ffmpeg

cd /usr/src/ffmpeg/
make distclean
git pull
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(./version.sh)" --backup=no --deldoc=yes --fstrans=no --default
hash x264 ffmpeg ffplay ffprobe

Sollten zweifel bestehen ob ffmpeg und x264 korrekt eingerichtet wurden, im Aufruf von x264 –version und im Aufruf von ffmpeg erscheint als „built“-Datum das aktuelle Datum.

Scan to Donate Bitcoin to der_metzger
Did you like this?
Tip der_metzger with Bitcoin

Aktuelle FFmpeg und x264 Version Installieren

x264

Abhängigkeiten Installieren

Entfernen der alten Installationen von x264, libx264-dev und ffmpeg.

Alle für die übersetzung von x264 und FFmpeg notwendigen Pakete holen.

Der aktuelle Benutzer muss noch in die Gruppe „src“ so das er in /usr/src schreiben darf:

YASM holen und Compilieren!

x264 Installieren

Die aktuellen Sourcecodes für x264 holen und übersetzen.

Install libvpx

VP8/WEBM holen und compilieren

Installation von FFmpeg

Holen der aktuellsten Version, Compilieren, und Installation von FFMPEG.

lavf Support zu x264 Hinzufügen.

Der lavf-Support erlaubt x264 alle Input-Dateien anzunehmen die von FFmpeg unterstützt werden. Dies ist sehr praktisch wenn x264 direkt verwendet werden soll.

Hiermit ist die Installation abgeschlossen.
Du solltest die Source-Verzeichnisse von x264, libvpx, und ffmpeg behalten um Sie später einfach aktualisieren zu können. Siehe auch Aktualisieren von FFmpeg und x264 für weitere Informationen.

Um die Änderungen dieser Anleitung rückgängig zu machen und FFmpeg, x264, yasm und alle anderen Pakete aus dieser Anleitung wieder zu entfernen nutze folgendes Kommando:

 

Scan to Donate Bitcoin to der_metzger
Did you like this?
Tip der_metzger with Bitcoin