AMD64

今のマシンはAMD64のはずなので、64bitバイナリを作ったり実行したりできるはず、と思って試してみることにした。
ついでに、基本型のサイズを確認しようと次のプログラムを作成。

#include <stdio.h>

int main (int argc, char **argv)
{
  printf("int          : %d\n",sizeof(int));
  printf("unsigned int : %d\n",sizeof(unsigned int));
  printf("long         : %d\n",sizeof(long));
  printf("unsigned long: %d\n",sizeof(unsigned long));
  printf("double       : %d\n",sizeof(double));
}

まず、32bit版をコンパイル

$ gcc -m32 sizeof.c -o sizeof32

次に、64bit版をコンパイル

$ gcc -m64 sizeof.c -o sizeof64

ところが、-lgcc_sがないとかと言われて、コンパイルできない。
なので、libc6-dev-amd64をインストール。

$ sudo apt-get install libc6-dev-amd64

これでコンパイルはできたものの、実行できない。

$ ./sizeof 
bash: ./sizeof: cannot execute binary file

何が足りないのだ?

      • -

そもそも、64bit版のUbuntuをインストールしなければいけなかったのか。
でも、Ubuntuの日本語版には64bit版って配布されていなかったよな。
というわけで、64bit版ライブラリはすぐに削除した。

$ sudo apt-get remove lib64gcc1 libc6-amd64 libc6-dev-amd64