3 Punkte von GN⁺ 2023-07-15 | 3 Kommentare | Auf WhatsApp teilen
  • 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

 
ryuheechul 2023-07-15

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...

 
xguru 2023-07-16

Ach, dass es in einen Codeblock eingeschlossen wird, ist ein Bug ;_;

 
GN⁺ 2023-07-15
Hacker-News-Kommentare
  • Der Autor hat einen Beitrag darüber verfasst, wie er GCC patcht, um tatsächlich portable ausführbare Dateien zu bauen.
  • Mit diesem Patch lässt sich Software wie vim, emacs, ninja, bash, git und gcc mit Cosmopolitan Libc bauen.
  • Die gebauten ausführbaren Dateien sollten unter Linux, FreeBSD, MacOS, OpenBSD, NetBSD und Windows laufen können.
  • Der Autor liefert eine Liste von Software, die sich mit dieser Technik bauen lässt.
  • Im Go-Repository gibt es zu diesem Thema ein Ticket.
  • Ein Kommentator schlägt einen anderen Ansatz vor, um ein neues OS-Ziel zu bauen.
  • Ein anderer Kommentator schlägt vor, eine Liste von Software zu veröffentlichen, die mit dieser Technik erfolgreich kompiliert wurde.
  • Jemand stellt den praktischen Zweck tatsächlich portabler ausführbarer Dateien infrage.
  • Ein anderer Kommentator schlägt einen anderen Ansatz für den Umgang mit Konstanten im Code vor.
  • Es gibt eine Diskussion über die Verwendung von Signalnummern und errno.
  • Jemand hinterfragt die C++-Standardbibliothek und die Verwendung von std::error_code.
  • Ein Kommentator hält dieses Thema für erstaunlich.
  • Es gibt eine Diskussion über die Compile-Time-Konstante EINVAL.