Laufen Terminal Programme auf allen Linux Distros wenn man sie von einer compiled?
Hallo, Community.
Ich arbeite grad an einem Terminal Programm, dass ganze schreibe ich mit MonoDevelop C# auf Linux Mint. Wenn ich also das Terminal Programm kompiliere, läuft es dann auf allen Linux Distributionen? Ich nehme an, weil Mint auf Ubuntu basiert, läuft es auf allen Ubuntu basierten Distros? Das heisst ich müsste also extra noch für Debian basierte, Raspbian und CentOS kompilieren? Ich will, das mein Terminal Programm eben nicht nur für Linux Mint verfügbar ist sondern möchte, dass sie auf Ubuntu, Debian, CentOS basierten Distros läuft, deswegen die Frage.
3 Antworten
Hallo
Wenn ich also das Terminal Programm kompiliere, läuft es dann auf allen Linux Distributionen?
Das kann man pauschal nicht sagen weil es logischerweise auch davon abhängt ob alle Abhängigkeiten und Pfade die Du darin benutzt auf der Zieldistribution ebenso vorhanden sind. Selbst wenn die Bibliotheken auf die Du zugreifst dort im selben Pfad liegen kann es aber sein das die Versionen sich unterscheiden.
Wenn Du ein Flatpak Paket schnürst UND die Zieldistribution dieses auch unterstützt kannst Du vielen Fettnäpfchen aus dem Weg gehen weil Du die benötigten Abhängigkeiten selbst mit auf das System bringst.
Je näher Du POSIX-konform programmierst stehen die Chancen auf jeden Fall höher.
Linuxhase
nein, das Executable hat Abhängigkeiten zu verschiedenen anderen Libraries, und die müssen zur Laufzeit vorhanden sein.
Wenn man einfach nur baut, dann wird es nur auf der Distri-Familie laufen, mit der man gebaut hat. Und auch dazu muss man sich dann um die ganzen Dependencies kümmern.
Mit etwas Mühe bekommt man Binaries hin, die -- wenn alle Deps da sind -- dann auf verschiedenen Distris laufen. Das nutzt z.B. Mozilla für die firefox und thunderbird-Builds. Für C/C++ Builds gibt es enstprechende Werkzeuge, z.B. das hier:
https://phusion.github.io/holy-build-box/
C# / Mono ist natürlich ein Exot unter Linux, das wird dann zusätzlichen Aufwand verursachen.
Grundsätzlich: Jein.
Sofern alle Abhängigkeiten (inkl. passende Versionsnummer der Bibliotheken, etc.) vorhanden sind und im Fall von Maschinencode die Prozessorarchitektur stimmt (ARM-Binaries auf x86_64 ist nicht so ohne weiteres machbar; ggf. mit qemu-arm) und eventuelle hardcodierte Pfade vorhanden sind bzw. erstellt werden können geht das ganze aber ohne Probleme.