- 1. 概要
- 2. main のみ
- 3. 2 つ以上
- 4. デバッグシンボル出力
- 5. インクルードパス指定
- 6. 参考サイト
1. 概要
複雑なシステムのプログラムをコンパイル・リンクする際は、「cmake」なり「make」なりを使用しますが。
簡単なプログラムであれば、「clang」のコマンドのみで、コンパイル・リンクすることができます。
2. main のみ
「main.cpp」のみで成り立つ、簡単なサンプルプログラムであれば。
clang main.cpp
のみで、コンパイル・リンクできます。
カレントディレクトリに。
a.out
が作成されて。
./a.out
で実行することができます。
3. 2 つ以上
2 つ以上のソースが存在する場合。
例えば、「main.cpp」「sub.cpp」とあって、「sub.cpp」内に、「class」の定義が存在し、「main.cpp」からその「class」を使用している場合は。
clang++ main.cpp sub.cpp
で、コンパイル・リンクします。
「class」を使っているので、「clang++」と「C++」でコンパイルすることを明示します。
4. デバッグシンボル出力
「lldb」を使って、デバッグしたいとき。
最適化なしで、デバッグシンボル出力するには。
前項と同じものを、コンパイル・リンクする場合。
clang++ -O0 -g main.cpp sub.cpp
と「-O0」の最適化なしオプション、「-g」のデバッグシンボル出力オプションをつけます。
これで、デバッグするには。
lldb a.out
プロンプトに入ったら。
b main
run
で、「main」の箇所で停止します。
5. インクルードパス指定
例えば、「clang」のデフォルトのインクルードパスは、「clang++」の場合、カレントパス以外に。
/usr/include/c++/v1
/usr/lib/clang/18/include
/usr/include
があるようです。
「-v」オプションで、「clang++」を動作させて調べました。
「18」は、「clang」のバージョンが「FreeBSD clang version 18.1.6」であったためです。
これに例えば。
/usr/local/include
をインクルードパスとして追加するには。
clang++ source.cpp -I /usr/local/include
と、「-I」オプションを使用します。
6. 参考サイト
本ページは、下記のサイトを参考にさせていただきました。
「コンパイラによるリンク時最適化(Link Time Optimization) #C++」
|
|