高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1118
Static linking of user binaries on Mac OS X


Q:自分のバイナリを静的にリンクさせようとしていますが、crt0.o が見つからないため、リンクに失敗します。なぜでしょうか?

A:Mac OS X では、ユーザバイナリの静的なリンクはサポートされていません。ユーザバイナリを Mac OS X のライブラリやインタフェースの内部実装にリンクさせたとしたら、Mac OS X のアップデートや機能強化の実施が制限を受けることになります。その代わり、crt0.o を探すのではなく自動的に crt1.o とリンクさせるなど動的なリンクをサポートしています。

静的リンクがもたらす制約を十分に検討し、顧客および顧客のニーズについて、また今後提供していく必要のある長期的なサポートを考慮するよう強く提言します。アップルでは、公開 API をサポートし、完全な互換性を保証するように務めますが、静的にリンクされたプロジェクトの互換性については保証できません。システムのアップデート、セキュリティのアップデート、および大幅な改訂などで Mac OS X に何らかの変更を加えれば、静的にリンクされたコードは機能しなくなる可能性があります。

自分のプロジェクトを静的にリンクするのが絶対不可欠であり、crt0.o が必要な場合には、Darwin から Csu モジュールを取得して静的に crt0.o を作成することはできます。その際には顧客に対して、静的にリンクされたコードを使った製品をインストールすることで、互換性のリスクが伴うことを明記するのを忘れないでください。


[2002 月 2 月 7 日]