Linuxであれば簡単なのですが、Windows上でNetBeansのC++開発環境を構築するのは少々複雑でした。
NetBeansはGNUコンパイラ系を使用するので、Windows上ではまずGNUコンパイラを整えるところから始まります。GNUコンパイラはUNIX系のツールなので、Windowsへは移植という形でいくつか存在します。著名なところではCygwin、MinGWでしょうか。
NetBeansはCygwinを認識するみたいなのでCygwinであれば設定が簡単です。しかし、CygwinのGCCで作成したプログラムはcygwin1.dllを必ずリンクします。cygwin1.dllのライセンスは商用ライセンスとGPLのデュアルライセンスなので、Red Hat社から商用ライセンスを購入しない場合はGPLが適用され、CygwinのGCCで作成したプログラムはGPL派生物に該当します。MinGWのGCCで作成したプログラムはmsvcrt(マイクロソフトのランタイムライブラリ)とリンクするので、それだけではGPL派生物には該当しません。
そこで、仕事で使う用途ではMinGWを選択することが多いと思われます。しかしながら、NetBeansでMinGWを使う設定は一筋縄ではいかなかったので、次のページに構築の経緯を記載しました。
http://www.torutk.com/projects/swe/wiki/Windows_NetBeans_C++%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83
なお、Windows 7 64bit版、Cygwin 64bit版、MinGW64での構築です。
NetBeansからmakeを呼び出すときに、MinGWを使う設定であってもCygwinのシェル環境が使われているように見えるので、Cygwinを入れていないマシンでMinGWを使うときは、また別な設定、振る舞いをするのかと思います。
Windows 7 64bit版にMinGW64を入れる手順は次のページに記載しました。
Windows MinGW開発環境 - ソフトウェアエンジニアリング - Torutk
64bitプログラムのメモリーモデル
AMD64プロセッサとその互換プロセッサ*1での64bitプログラムには、OSによってメモリにいくつか制約があります。
Linuxでは、メモリーモデルにsmall, medium, largeがあります*2。GCCでビルドしたプログラムはデフォルトはsmallモデルとなります。
AMD64、Linux 64bit OS上での64bitプログラムのメモリモデルと制約
メモリモデル | コードサイズ | データサイズ(静的) | 備考 |
---|---|---|---|
small | 2GBまで | 2GBまで | デフォルト |
medium | 2GBまで | なし | |
large | なし | なし |
コードとデータのサイズの制約は、単一オブジェクトで2GBという記述と、合計で2GBという記述とがあり、どちらが正しいのかは要調査です。コードとデータのアクセスに相対アドレス指定を使うらしいので、その場合はそれぞれ合計での値になりそうですが。
Windowsでは、メモリモデルの選択はできず、静的データサイズの上限は2GBとなるようです。