Makefileに書かれたgccのコードを調べた時のメモを残しておく。
Makefile
common
-
-fPICGenerate position-independent code if possible
ディレクトリ探索のためのオプション
- ディレクトリ探索のためのオプション
-
-Idirヘッダ・ファイルを見つけるために探索するディレクトリ -
-Ldir-lにより指定される静的ライブラリのパスを追加
リンカオプション
- リンク処理用のオプション
-
-Wl,-rpath-lにより指定される共有ライブラリのパスを追加 -
-shared共用オブジェクトを作成- 共有ライブラリを作成する場合は
-cをつけない - https://qiita.com/YusukeSuzuki@github/items/6a19d79f523ddf6fb440
- 共有ライブラリを作成する場合は
-
-rdynamicすべてのシンボルを動的シンボル・テーブルに追加
プリプロセッサオプション
-
-D NAMEマクロを定義する(値は1)
その他
-
-std=c++11C++11の機能を使用する -
-fsanitize=leakメモリリークの検出 -
-fsanitize=address不正なメモリアクセスの検出
pkg-config
- pkg-config の手引き
-
https://ja.wikipedia.org/wiki/Pkg-config
- 環境変数
PKG_CONFIG_PATHのパスに存在する*.pcファイルに記録された情報を元に、ビルドの際に必要な文字列を返す - Ubuntu なら
/usr/lib/pkgconfig/以下?
- 環境変数
-
--libsoutput all linker flags -
--cflagsoutput all pre-processor and compiler flags -
./configure --prefix=dirしてインストールした場合、PKG_CONFIG_PATHにdir/lib/pkgconfigを指定する?
ldconfig
- sonameをファイル名とするシンボリックリンクを作成する
- Linux共有ライブラリの簡単なまとめ
CUnit
- コンパイル
gcc ./src.c ./tsrc.c -Wall -Wl,-rpath /usr/local/lib -lcunitexport LD_LIBRARY_PATH=/usr/local/lib gcc ./src.c ./tsrc.c -Wall -lcunit