ユーザ用ツール

サイト用ツール


技術メモ:vc_6.0_build

VC++6.0のリリースビルドでデバッグを容易にするための設定

リリースしたバイナリのクラッシュダンプから解析できるようにリリースビルドでもシンボル情報を出力しておく。

外部にリリースしたバージョンはソースだけでなくバイナリやシンボル、オブジェクトも保存しておく。オブジェクトも保存しておくことで、後の再ビルドでも対象バージョンとほとんど同じバイナリが生成される。

コンパイルオプション

シンボルの生成

PDBを出力する /Zi
リリースビルドでもシンボルを生成 /DEBUG
ただしエディット・コンティニュー(/ZI)は使用しないこと
参照されている関数のみを含める /OPT:REF

最適化

サイズに最適化する /O1
速度に最適化は使用しないこと。マイクロソフトも/O1を推奨していて、製品には/O1を使用しているらしい。

その他

標準インクルードパスの無視 /X
不必要/意図しないヘッダのインクルードを防止する。

ワーニングレベルをきつくする /W4
ワーニングをエラーとして扱う /WX
上記設定でビルドできない場合

#pragma warning(push,3)
#include "header.h"
#pragma warning(pop)

#pragma warning(disable:4201)
code...
#pragma warning(default:4201)

リンカの設定

マップファイルを生成する

マップファイルの生成 /MAP
マップファイルに行情報を含める /MAPINFO:LINES
マップファイルにエクスポートされた関数を含める /MAPINFO:EXPORTS

その他

デフォルトライブラリを無視する /NODEFAULTS
リンクしているライブラリを表示する /WARN:3
不必要/意図しないライブラリのリンクを防止する。

DLLのロード位置は明示的に決める。複数のDLLでロード位置が同じ場合リロケーションされ、マップファイルのアドレスとの不一致が起こり、複雑な計算が必要になる。

TODO:

技術メモ/vc_6.0_build.txt · 最終更新: 2011/03/10 19:19 by nabium