3 ポイント 投稿者 GN⁺ 2023-07-15 | 3件のコメント | WhatsAppで共有
  • あるソフトウェアエンジニアが 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件のコメント

 
ryuheechul 2023-07-15

これから neo はメッセージをコードブロックで囲む形式になるのでしょうか? 横スクロールしなければならない点と、赤系のテキストカラーが少し残念ですね…。

 
xguru 2023-07-16

ああ、コードブロックで囲まれてしまうのはバグです ;_;

 
GN⁺ 2023-07-15
Hacker Newsのコメント
  • 筆者は、GCCにパッチを当てて実際に移植可能な実行ファイルをビルドする方法について投稿しました。
  • このパッチにより、vim、emacs、ninja、bash、git、gcc などのソフトウェアを Cosmopolitan Libc でビルドできます。
  • ビルドされた実行ファイルは、Linux、FreeBSD、MacOS、OpenBSD、NetBSD、Windows で動作できるはずです。
  • 筆者は、この技術を使ってビルドできるソフトウェアの一覧を提供しています。
  • Go リポジトリには、このテーマに関するチケットがあります。
  • あるコメント投稿者は、新しい OS ターゲットをビルドする別のアプローチを提案しています。
  • 別のコメント投稿者は、この技術で正常にコンパイルされたソフトウェアの一覧を公開することを提案しています。
  • ある人は、実際に移植可能な実行ファイルの実用的な目的に疑問を呈しています。
  • 別のコメント投稿者は、コード内の定数を扱う別のアプローチを提案しています。
  • シグナル番号と errno の使用についての議論があります。
  • ある人は、C++ 標準ライブラリとその std::error_code の使用に疑問を呈しています。
  • あるコメント投稿者は、この話題を驚くべきものだと考えています。
  • コンパイル時定数 EINVAL についての議論があります。