私の仕事は、通常、インターネットからオープン ソースを取得することです。MIPSEL ツールチェーンを使用してクロス コンパイルし、バイナリを取得します。コードをクロスコンパイルするのに苦労しています。ソース パッケージをクロス コンパイルするための一般的な手順は何ですか。プラットフォーム Linux を使用しています。たとえば、CC、ld、その他は?すべてのソース コードの構造が異なるため、パッケージ間の類似性を判断できません。どうすればクロスコンパイルできますか? それを達成するための体系的な手順はありますか?お知らせ下さい。
1016 次
1 に答える
1
ランダムな OSS tarball をダウンロードして、現在スタックしているとしか思えません。いくつかの指針を示すことしかできません。万能で 1 つのサイズですべてに対応できるソリューションをまだ発見していないためです。ニーズに最も適したアプローチを見つける前に、おそらく少し実験する必要があるでしょう。そして、微調整、いじり、そして多くの忍耐なしに最初から最後まで行われた重要なクロスコンパイル作業にまだ遭遇していません。
- 基本的な解決策: プラットフォーム用のツールチェーンが必要です。ニーズを満たすビルド済みのものがあればここを参照してください。または、 Dan Kegel の crosstool ページにアクセスすると、サポートされているプラットフォーム用のツールチェーンの作成が大幅に自動化されます。そのツールチェーンにより、標準ライブラリ以外に依存関係のないすべてのプログラムをコンパイルおよびリンクできます。
- 多くのオープン ソース パッケージには、クロスコンパイル対応の autoconf 構成スクリプトが付属しています。つまり、追加
--target=xxxx
すると、実際に適切なクロス コンパイラを使用するようになります。これは多くの場合うまくいきますが、最初にいくつかのライブラリをダウンロードしてクロスコンパイル/インストールする必要がある場合があります。主な問題は、小さなコードをコンパイルしてその出力を調査し、環境の機能を特定しようとする autoconf スクリプトです。configure を手動で変更するか、不要な機能を無効にすることで解決できる場合があります。configure --without-xxxx
- ターゲット システムが組み込み Linux システムの場合、Buildroot、OpenEmbeddedまたはELDKなどのツールは、使用可能なツールチェーンの作成だけでなく、Linux 用の一般的に使用される多くのライブラリとアドオン パッケージのクロス コンパイルも自動化します。これらのツールを使用すると、ターゲット リストに他のパッケージ (作成または購入したカスタム アプリケーションなど) を追加することもできますが、最初に 2) で説明した問題の一部を手動で解決する必要があります。しかし、これらのツールに付属するパッチスクリプトを使用して、コンパイルの問題を回避するために一般的に使用されるトリックについて学ぶことができます。
于 2013-07-31T17:33:17.883 に答える