オフィスアワーがそろそろ始まるよ!()

ビルドオプション

Zenコンパイラが備えるビルドオプションについて、特によく利用するものついて説明します。一覧はzenもしくはzen --helpコマンドで表示できます。

リリースモード

オプションの指定がなければデバッグモードでビルドします。リリースモードは以下の3つです。

  • --release-fast
  • --release-small
  • --release-safe

--release-fastはバイナリサイズを犠牲に実行速度を速くします。安全性チェックはオフになります。

--release-smallは実行速度を犠牲にバイナリサイズを小さくします。安全性チェックはオフになります。

--release-safeは安全性チェックをオンにしたまま最適化を行います。実行速度はrelease-fastよりは遅くなり、バイナリサイズはrelease-smallより大きくなります。

コンパイルオプション

--c-source [オプション] [ファイル]]

コンパイル対象のCソースコードを指定します。ファイルの前にC言語のビルドオプションを指定することができます。例えば、警告オプション (-Wall) を有効にする場合、次のようにします。

$ zen build-obj --c-source -Wall main.c

-fstack-check/-fno-stack-check

スタックガードを挿入し、スタックオーバーフローを検出するスタックオーバーフロー検査機能があります。これはビルドモードがDebugもしくはReleaseSafeの時にデフォルトで有効なっています。

-fstack-checkは、ReleaseFastReleaseSafeモードでのビルド時にスタックオーバーフロー検査機能を有効にします。-fno-stack-checkDebugReleaseSafeモードで該当の機能を無効化します (非推奨のオプションです) 。

--emit [asm|bin|llvm-ir]

コンパイラの中間生成物を出力します。asmを指定するとアセンブリが、llvm-irを指定するとLLVM中間表現が出力されます。

-fPIC/-fno-PIC

位置独立コード (position independent code) の有効/無効を切り替えるためのオプションです。

-ftime-report

コンパイルにかかった時間のプロファイルを表示します。

--name <名前>

出力バイナリの名前を指定します。

$ zen build-exe main.zen --name overriden
$ ls
main.zen  overriden

-dynamic

共有ライブラリ (.so, .dll, .dylib) をビルドする時に使用します。

--strip

デバッグシンボルをバイナリから取り除きます。

-target

ビルドするターゲット環境を<アーキテクチャ><サブアーキテクチャ>-<OS>-<ABI>の形式で指定します。ターゲット環境一覧はzen targetsコマンドで確認できます。

-isystem [ディレクトリパス]

C言語との相互運用を行う際、C言語のヘッダファイルを探索するパスを追加します。

-dirafter [ディレクトリパス]

-isystemと効果は同じですが、-dirafterで追加されたパスは最後に探索されます。

リンカオプション

--library [ライブラリ名]

リンクするライブラリを追加します。libcを追加する場合は--library cとなります。

--library-path [ディレクトリパス] / -L [ディレクトリパス]

リンクするライブラリを探索するパスを追加します。-L--libraryのエイリアスです。

--linker-script [ファイルパス]

リンクする際のリンカスクリプトを指定します。

☰ 人の生きた証は永遠に残るよう ☰
Copyright © 2018-2019 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.