Zenコンパイラが備えるビルドオプションについて、特によく利用するものついて説明します。一覧はzen
もしくはzen --help
コマンドで表示できます。
オプションの指定がなければデバッグモードでビルドします。リリースモードは以下の3つです。
--release-fast
はバイナリサイズを犠牲に実行速度を速くします。安全性チェックはオフになります。
--release-small
は実行速度を犠牲にバイナリサイズを小さくします。安全性チェックはオフになります。
--release-safe
は安全性チェックをオンにしたまま最適化を行います。実行速度はrelease-fast
よりは遅くなり、バイナリサイズはrelease-small
より大きくなります。
コンパイラの builtin ソースコードを表示します。このオプションを指定した場合は情報の表示のみでビルド自体は実行されません。
$ zen build-exe --builtin
コンパイル対象のCソースコードを指定します。ファイルの前にC言語のビルドオプションを指定することができます。例えば、警告オプション (-Wall
) を有効にする場合、次のようにします。
$ zen build-obj --c-source -Wall main.c
スタックガードを挿入し、スタックオーバーフローを検出するスタックオーバーフロー検査機能があります。これはビルドモードがDebug
もしくはReleaseSafe
の時にデフォルトで有効なっています。
-fstack-check
は、ReleaseFast
とReleaseSafe
モードでのビルド時にスタックオーバーフロー検査機能を有効にします。-fno-stack-check
はDebug
とReleaseSafe
モードで該当の機能を無効化します (非推奨のオプションです) 。
コンパイラの中間生成物を出力します。asm
を指定するとアセンブリが、llvm-ir
を指定するとLLVM中間表現が出力されます。
コード生成とデータ保存のメモリモデルを指定します。
model には jit
、small
、kernel
、medium
、large
のいずれかを指定します。
位置独立コード (position independent code) の有効/無効を切り替えるためのオプションです。
コンパイルにかかった時間のプロファイルを表示します。
出力バイナリの名前を指定します。
$ zen build-exe main.zen --name overriden
$ ls
main.zen overriden
共有ライブラリ (.so, .dll, .dylib) をビルドする時に使用します。
デバッグシンボルをバイナリから取り除きます。
ビルドするターゲット環境のターゲットトリプル(<アーキテクチャ>-<OS>-<ABI>
の形式)を指定します。
ターゲット環境一覧はzen targets
コマンドで確認できます。ターゲット環境一覧から、アーキテクチャ、OS、ABI について適切なものを選んで次のように指定します。
-target thumb-freestanding-eabi
ターゲットの特定のCPUタイプを指定します。
ターゲットのCPUタイプ一覧は、次のようにターゲットトリプルと -mcpu help
オプションを指定して zen build-exe
コマンド実行することで確認できます。
zen build-exe -target thumb-freestanding-eabi -mcpu help main.zen
Available CPUs for this target:
arm1020e - Select the arm1020e processor.
arm1020t - Select the arm1020t processor.
arm1022e - Select the arm1022e processor.
arm10e - Select the arm10e processor.
# 以下略
ソースファイルは存在しないファイルを指定しても問題ありません。
Available CPUs for this target の内容から適切なものを選んで次のように指定します。
-mcpu cortex-m4
ターゲットのアーキテクチャの属性を指定します。
指定できるアーキテクチャの属性は、-mcpu
と同様にして -mcpu help
を指定して zen build-exe
コマンドを実行することで確認できます。-mattr
には Available features for this target の内容を指定します。
$ zen build-exe -target thumb-freestanding-eabi -mcpu help main.zen
Available CPUs for this target:
arm1020e - Select the arm1020e processor.
# 中略
Available features for this target:
32bit - Prefer 32-bit Thumb instrs.
8msecext - Enable support for ARMv8-M Security Extensions.
a12 - Cortex-A12 ARM processors.
a15 - Cortex-A15 ARM processors.
# 以下略
mattr
は +
、-
を前に付けることができます。+
を付けるとその属性を有効に、-
を付けると無効にできます。 次のように ,
で区切って複数指定することができます。
-mattr +m,+a,-c
C言語との相互運用を行う際、C言語のヘッダファイルを探索するパスを追加します。
-isystem
と効果は同じですが、-dirafter
で追加されたパスは最後に探索されます。
リンクするライブラリを追加します。libc
を追加する場合は--library c
となります。
リンクするライブラリを探索するパスを追加します。-L
は--library
のエイリアスです。
リンクする際のリンカスクリプトを指定します。
☰ 人の生きた証は永遠に残るよう ☰
Copyright © 2018-2020 connectFree Corporation. All rights reserved. | 特定商取引法に基づく表示
Zen, the Zen three-circles logo and The Zen Programming Language are trademarks of connectFree corporation in Japan and other countries.