32bit OS 에서는 int 타입과 long 타입이 다 같이 4바이트의 크기를 갖지만.

64bit OS 에서는 int 타입이 4바이트, long 타입이 8바이트의 크기를 갖는다.

그렇다면 64비트 리눅스 환경에서 32비트 용으로 작성된 C 소스를 gcc 로 컴파일하려면 어떻게 해야 할까? 

 

// Filename: testIntSize.c

int main()
{
#include <stdio.h>

int main()
{
    printf("sizeof(int) = %d\n", sizeof(int));
    printf("sizeof(long) = %d\n", sizeof(long));

    return 0;
}

 

# 64비트 용으로 컴파일하고 실행하기

$ gcc -o testIntSize testIntSize.c

$ ./testIntSize

sizeof(int) = 4
sizeof(long) = 8

 

# 32비트 용으로 컴파일하고 실행하기 (옵션 -m32 추가)

$ gcc -m32 -o testIntSize testIntSize.c

$ ./testIntSize

sizeof(int) = 4
sizeof(long) = 4

 

 

Posted by Scripter
,