OSX Lion でホストされ、i386-pc-solaris2.10 と x86_64-linux-gnu の両方をターゲットとするクロス gcc コンパイラをいくつか構築することに成功しました。PATH の $BINUTILSROOT および $BINUTILSROOT/bin の下に、これらのターゲット用に 2.22 の binutils がインストールされています。特にhttp://gcc.gnu.org/install/configure.htmlを読む
--with-as=pathname アセンブラーを見つけるための標準規則によって検出されたものではなく、パス名が指すアセンブラーをコンパイラーが使用する必要があることを指定します。
- GCC がクロス コンパイラでビルドされていない場合は、libexec/gcc/target/version ディレクトリを確認してください。libexec のデフォルトは exec-prefix/libexec です。exec-prefix のデフォルトは prefix であり、上記の --prefix=pathname スイッチで上書きされない限り、デフォルトは /usr/local です。target は「sparc-sun-solaris2.7」などのターゲット システムのトリプルで、version は 3.0 などの GCC バージョンを示します。
- ターゲット システムがビルドしているシステムと同じ場合は、オペレーティング システム固有のディレクトリ (Sun Solaris 2 の /usr/ccs/bin など) を確認してください。
- 名前の先頭にターゲット システムのトリプルが付いているツールの PATH をチェックインします。
- ホストとターゲット システムのトリプルが同じ場合 (つまり、ホスト ツールがターゲットにも使用できる場合はホスト ツールを使用します)、名前の先頭にターゲット システムのトリプルが付加されていないツールの PATH をチェックインします。
-gcc ( --with-gnu-as --with-gnu-ld で構成) はそれぞれ i386-pc-solaris2.10-as と x86_64-linux-gnu-as (および対応する -ld ) PATH にある $BINUTILSROOT/bin にあるため、上記のリストの 3 番目の箇条書きが適用されます。しかし、これはうまくいかないようで、dtrace で -gcc が PATH で -as と -ld を検索しないことを確認しました。私が見つけた唯一の解決策は、 as と ld を追加することも完全に指定することです
--with-as=$BINUTILSROOT/bin/-as --with-ld=$BINUTILSROOT/bin/-ld
gcc を構成するとき。
gcc ドキュメントを誤解していますか、それともクロスコンパイルを機能させる唯一の方法ですか?