具体的には、リンクするライブラリ、システムコール、メモリ空間、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 用が別々に提供されることになります.
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 用が別々に提供されることになります.
URL確認させていただきました。ご回答ありがとうございます。
(自身のOSとシステムコールに対する理解不足のため、わからないのかもしれませんが)libcだけではなく、システムコールとの対応関係があればありがたいのですが・・・。
ライブラリがまったく違ったと思います。移行期には両方入れてましたよね。
私の理解の程度も、「ライブラリの指定が違ったなぁ」程度です。
ですので、構造的にすっきり理解したいのです。
URL確認させていただきました。ご回答ありがとうございます。
(自身のOSとシステムコールに対する理解不足のため、わからないのかもしれませんが)libcだけではなく、システムコールとの対応関係があればありがたいのですが・・・。