目次→コンパイラ→
コマンド・ラインを使う→
Compiler Option: -target←オリジナル・サイト
目次→
コンパイラ・オプション一覧→
Compiler Option: -target←オリジナル・サイト
クロス・コンパイルのための、目標プラットフォームを設定します。
構文:
-target < platform >
パラメーター:
platform
目標プラットフォーム。使える値:
- android
- dos
- win32
- win64
- xbox
- <os>-<arch>
<os> can be one of:
- android
- linux
- cygwin
- darwin
- freebsd
- netbsd
- openbsd
<arch> can be one of:
- x86
- x86_64
- arm
- aarch64
- powerpc or ppc
- powerpc64 or ppc64
- powerpc64le or ppc64le
Examples:
- android-arm
- android-x86
- freebsd-x86
- freebsd-x86_64
- linux-arm
- linux-aarch64
- linux-x86
- linux-x86_64
- ...
-
下位互換性のために、以下の値が認められています。
これらは、コンパイラのデフォルト基本設計概念(ホストと同じ)と一緒になって、対応するオペレーティング・システムを選びます。
これらの値が、明示的に基本設計概念を指定しないからです。
- linux
- cygwin
- darwin
- freebsd
- netbsd
- openbsd
-
fbc (例: FB-linux リリース)は、例えば、GNU トリプレットを追加で認識します:
- i686-w64-mingw32
- x86_64-w64-mingw32
- i686-pc-linux-gnu
- arm-linux-gnueabihf
- i386-pc-msdosdjgpp
- arm-linux-android
- armv7a-linux-android
- armv7a-linux-androideabi
- armv5te-linux-android
- i686-linux-android
- x86_64-linux-android
- ...
記述:
-target コンパイラ・オプションを使うと、ソース・コードがコンパイルしてリンクされているホストとは異なるプラットフォーム用の実行可能ファイルを作成できます。
クロス・コンパイルするためには、 適切なライブラリと、クロス・コンパイル・ツール(アセンブラ、リンカ)を、インストールしなければなりません。(
FB and cross-compiling を参照下さい。)
-target <platform> を指定すると、コンパイラは、プログラムを、そこそこのレベルで、それが所定のプラットホームでコンパイルされるように、コンパイルします。
これは、前もって定められた、__FB_*__ オペレーティングシステムに特有のシンボル、デフォルトの呼び出し規則、オブジェクトと実行可能なファイル形式(例えば ELF/COFF)、利用できるランタイムライブラリと関数、などに影響します。
-
FB-dos や FB-win32 リリースなどのスタンドアロンの FB セットアップの場合:
-
-target <platform> を指定すると、コンパイラは、bin/<platform>/ ディレクトリのコンパイラツールと、lib/<platform>/ ディレクトリの目標に固有なライブラリを使います。
例えば、-target win32 を指定すると、コンパイラは、Win32 のために、bin/win32/ からのツールと、lib/win32/からのライブラリを使って、コンパイルします。
-
ホスト(たとえば win32 の上の -target win32)にマッチする -target オプションを指定する必要はありません。(しかし、マッチさせてもかまいません)。
マッチしているかどうかは、コンパイル過程で違いを生じません。
-
-target を指定しないと、コンパイラは、既定で、ネイティブ・システムのためにコンパイルします。
コンパイラは、ネイティブ・システムと一致している bin/ と lib/ ディレクトリから、コンパイラ・ツールとライブラリを使います。
- -target は、プラットフォーム・ターゲットとアーキテクチャを指定する代替方法として、gnu トリプレットとして指定できます。
たとえば、-target i586-pc-mdosdjgpp は、-arch 586 -target dos として識別され、bin/dos/ でバイナリを検索し、lib/dos/ でライブラリを検索します。
プラットフォーム文字列は、バイナリ ツールの名前の前に付けられません。
-
FB-Linuxリリースのような通常の FB セットアップの場合:
-
-target <platform> を指定すると、コンパイラは、<platform>- 文字列を−GNU Binary Utilities と gcc の実行可能ファイルの名前の前に付けます。
たとえば、-target i686-w64-mingw32 を指定すると、コンパイラは、ld (リンカーの他の他のツールのためと同じ)の代わりに、i686-w64-mingw32-ld を呼び出します。
これは、fbc が、binutils/gcc クロス・コンパイラ・ツール・チェーンと融和できるようにして、クロス・コンパイル・ツールは、Linux 配布の典型的なインストール方法に、適合します。
-
-target win32 のような何かを指定しても、通常ここでは意味をなさないことに注意すべきです。
それはコンパイラが通常存在しない win32-ld を使おうとする原因になります。
Windows へのクロス編集のための binutils/gcc toolchain には、一般的に、win32 ではなくて、i686-pc-mingw32 のような名前があるからです。
-target win32 の代わりに、-target i686-pc-mingw32 のような何かを指定する必要があります。
-
下位互換性のために、所定の platform 文字列が、ホストを記載して、GNU 三つ子の代わりに FB 目標名(独立型 FB セットアップで -target オプションによって受け入れられる値)であるならば、-target オプションは無視されます。そして、<platform>- 文字列は、コンパイラ・ツールに接頭辞として付けられません。
たとえば、これは、-target linux が、FB-Linux リリースで使えるようにします。
コンパイラは、ld の代わりに linux-ld を使おうとせずに、無視します。
-
-target を指定しないと、コンパイラは、デフォルトで、ネイティブ・システムのためにコンパイルします。コンパイラは、目標に特有の接頭辞なしで binutils/gcc を呼び出します。
これで、fbc は、普通の Linux(そして、類似的の)システム (ネイティブ・コンパイルのための binutils/gcc が、目標に特有の接頭辞なしでインストールされる) と融和できるようになります。
-
FB 独自のランタイム・ライブラリ以外のライブラリは、gcc -print-file-name=...(または<platform>-gcc -print-file-name=...)を走らせることによって配置されます。
これにより、fbc が、正確なインストール・ディレクトリを知らなくても、Linux および同様のシステム上にインストールされている、システムと gcc ライブラリを使えるようになります。
トリプレットを使う場合、通常は os
<arch>-<vendor>-<os> という形式になりますが、ビルドシステム間や、ビルドシステムやツールチェーンの異なるバージョン間で時間の経過とともに大きく異なる場合があります。
fbc は
<arch>-<os> という形式も受け入れ、受け入れられるものについてかなり寛容であり、GNU トリプレットの少なくとも一部が認識されていれば、通常はエラーになりません
詳細については、
-buildprefix ページの、「
-buildprefix,
-prefix,
-target コマンド ライン オプションを使用した場合の詳細な動作」の段落を参照してください。
バージョン:
-
fbc 1.20.0 以前では、android はターゲットとして認識されませんでした。
-
fbc 1.10.0 より前は、gnu トリプレットはスタンドアロン ビルドでは許可されておらず、'-target i386-pc-msdosdjgpp' などは許可されていませんでした。
参照: