- あるソフトウェアエンジニアが GCC 向けのパッチを作成し、Cosmopolitan Libc を使って実際に移植可能な実行ファイルをより簡単に作れるようにしました。
- このパッチにより、bash、curl、git、そして gcc 自身のような人気ソフトウェアを、ソースコードを変更せずに Cosmopolitan Libc でビルドできます。
- ビルドされた実行ファイルは、Linux、FreeBSD、MacOS、OpenBSD、NetBSD、そして場合によっては Windows でも動作します。
- この記事では、自分のソフトウェアを Cosmopolitan Libc へ移植する方法について、段階的な手順を提供しています。
- このパッチは、システムの値に依存する
switch 文や構造体初期化の問題を解決します。
- 著者は当初、C プリプロセッサと
ifdef のために、sed と Python スクリプトを使って変換の自動化を試みましたが、完全には機能しませんでした。
- その後、著者は GCC プラグインの利用を検討し、問題を解決するために GCC 自体へパッチを当てる方法を模索しました。
- パッチ済みの GCC を使えば、Cosmopolitan Libc でソフトウェアをビルドできるため、移植プロセスがより簡単でスムーズになります。
- 著者は lua のビルドに成功し、python3.11 では ZIP アーカイブへアクセスするための変更も行いました。
- 文字列配列をルックアップテーブルとして使う busybox をビルドする際には、著者は困難に直面しました。
- 二項式のため、ncurses における構造体初期化にも課題がありました。
- 著者は、多くの場合において、Cosmopolitan Libc へソフトウェアを移植するのに必要な変更は最小限だと結論づけています。
- 著者は、このパッチが完璧ではない可能性があり、いくつかの制限があることも認めています。
- 著者は読者に対し、C ソフトウェアを Cosmopolitan Libc でビルドしてみるよう勧めています。
- 著者は、実行ファイルを Windows で動かせる可能性にも触れていますが、テストはしていません。
- 著者は追加情報と参考資料も提供しています.
3件のコメント
これから neo はメッセージをコードブロックで囲む形式になるのでしょうか? 横スクロールしなければならない点と、赤系のテキストカラーが少し残念ですね…。
ああ、コードブロックで囲まれてしまうのはバグです ;_;
Hacker Newsのコメント
std::error_codeの使用に疑問を呈しています。EINVALについての議論があります。