質問: Unix/Linuxにおける32bitバイナリと64bitバイナリの構造的な差異を教えてください。 具体的には、リンクするライブラリ、システムコール、メモリ空間、C言語intの幅などを 整理して理解したいです。
回答: http://www.valinux.co.jp/contents/tech/techlib/eos/linux64/linux... が良くまとまっていると思いますが,64bit バイナリは 64bit CPU の特長である 64bit レジスタや 64bit メモリアドレス空間を利用した(正確にはこれらを利用できるモードで動作する)プログラム,32bit バイナリはそれらを利用しないプログラムになります. C でプログラミングするときの最も注意すべき違いは,long int と void* の幅が 64bit になるところです(LP64 データモデルの場合;ちなみに LP64 では int 幅は 32bit のままで変わりません).void* が 64bit になっていることからわかるように,64bit アドレスで表現されるメモリ空間をリニアに扱うことができるようになります.また,ライブラリは 32bit 用,64bit 用が別々に提供されることになります.