Makefileに書かれたgccのコードを調べた時のメモを残しておく。
Makefile
common
-
-fPIC
Generate 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++11
C++11の機能を使用する -
-fsanitize=leak
メモリリークの検出 -
-fsanitize=address
不正なメモリアクセスの検出
pkg-config
- pkg-config の手引き
-
https://ja.wikipedia.org/wiki/Pkg-config
- 環境変数
PKG_CONFIG_PATH
のパスに存在する*.pc
ファイルに記録された情報を元に、ビルドの際に必要な文字列を返す - Ubuntu なら
/usr/lib/pkgconfig/
以下?
- 環境変数
-
--libs
output all linker flags -
--cflags
output 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 -lcunit
export LD_LIBRARY_PATH=/usr/local/lib gcc ./src.c ./tsrc.c -Wall -lcunit