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