- Ein Softwareingenieur hat einen Patch für GCC geschrieben, der das Erstellen tatsächlich portabler ausführbarer Dateien mit Cosmopolitan Libc vereinfacht.
- Mit diesem Patch lassen sich populäre Programme wie
bash, curl, git und sogar gcc selbst mit Cosmopolitan Libc bauen, ohne den Quellcode zu ändern.
- Die erzeugten ausführbaren Dateien können unter Linux, FreeBSD, MacOS, OpenBSD, NetBSD und in einigen Fällen auch unter Windows laufen.
- Der Artikel bietet eine Schritt-für-Schritt-Anleitung dazu, wie man eigene Software auf Cosmopolitan Libc portiert.
- Der Patch behebt Probleme mit
switch-Anweisungen und Strukturinitialisierungen, die von Systemwerten abhängen.
- Der Autor versuchte zunächst, die Umwandlung wegen des C-Präprozessors und
ifdef mit sed- und Python-Skripten zu automatisieren, doch das funktionierte nicht vollständig.
- Anschließend untersuchte der Autor die Verwendung eines GCC-Plugins und schließlich das Patchen von GCC selbst, um die Probleme zu lösen.
- Mit dem gepatchten GCC kann Software mit Cosmopolitan Libc gebaut werden, was den Portierungsprozess einfacher und reibungsloser macht.
- Dem Autor gelang es erfolgreich,
lua zu bauen und Änderungen an python3.11 vorzunehmen, um auf ZIP-Speicher zuzugreifen.
- Beim Bauen von
busybox, das String-Arrays als Lookup-Tabellen verwendet, stieß der Autor auf Schwierigkeiten.
- Wegen binärer Ausdrücke gab es auch bei Strukturinitialisierungen in
ncurses Herausforderungen.
- Der Autor kommt zu dem Schluss, dass die für die Portierung von Software auf Cosmopolitan Libc nötigen Änderungen in den meisten Fällen minimal sind.
- Der Autor räumt ein, dass der Patch nicht perfekt sein könnte und gewisse Einschränkungen haben kann.
- Der Autor ermutigt die Leser, zu versuchen, C-Software mit Cosmopolitan Libc zu bauen.
- Der Autor erwähnt die Möglichkeit, die ausführbaren Dateien unter Windows auszuführen, hat dies jedoch nicht getestet.
- Der Autor liefert zusätzliche Informationen und Referenzen.
3 Kommentare
Verwendet neo jetzt ein Format, bei dem Nachrichten in Codeblöcke eingeschlossen werden? Dass man horizontal scrollen muss und die rötliche Textfarbe sind ein bisschen schade...
Ach, dass es in einen Codeblock eingeschlossen wird, ist ein Bug ;_;
Hacker-News-Kommentare
errno.std::error_code.EINVAL.