WSL2 Ubuntu 20.04 에서 32bit Application Compile
32bit Application Compile
64 bit 시스템에서 32 bit application을 컴파일 하려면 몇가지 크로스 라이브러리가 필요합니다. WSL 1 은 이를 지원하지 않아 32 bit 기반 sdk 는 사용할 수 없습니다. 이번 WSL 2 는 가능하다는 이야기가 있어 확인합니다.
기본형 크기 비교
먼저 기본형 크기를 비교하는 간단한 코드를 작성합니다.
#include <stdio.h> int main(int argc, char* argv[]) { printf("hello world\n"); printf("sizeof(char) : %ld byte\n", sizeof(char)); printf("sizeof(short) : %ld byte\n", sizeof(short)); printf("sizeof(int) : %ld byte\n", sizeof(int)); printf("sizeof(long) : %ld byte\n", sizeof(long)); printf("sizeof(long long) : %ld byte\n", sizeof(long long)); printf("sizeof(float) : %ld byte\n", sizeof(float)); printf("sizeof(double) : %ld byte\n", sizeof(double)); return 0; }
64 bit 컴파일 및 실행
$ g++ main.cpp $ ./a.out hello world sizeof(char) : 1 byte sizeof(short) : 2 byte sizeof(int) : 4 byte sizeof(long) : 8 byte sizeof(long long) : 8 byte sizeof(float) : 4 byte sizeof(double) : 8 byte
시스템이 64 bit 이므로 특별한 옵션 없이 곧바로 컴파일 및 실행하여 확인합니다. long size가 8 byte인 것을 확인합니다.
32 bit 컴파일 및 실행
64 bit 시스템에서 32 bit application 을 컴파일하기 위해서는 먼저 32 bit 라이브러리 설치가 필요합니다.
$ sudo apt-get install gcc-multilib g++-multilib
-m32 옵션으로 컴파일 및 실행
$ g++ -m32 main.cpp $ ./a.out hello world sizeof(char) : 1 byte sizeof(short) : 2 byte sizeof(int) : 4 byte sizeof(long) : 4 byte sizeof(long long) : 8 byte sizeof(float) : 4 byte sizeof(double) : 8 byte
long type이 4byte로 바뀌어있는 것을 확인할 수 있습니다.
결론
32bit sdk를 WSL2에서 사용하는 것이 가능합니다. (짝짝짝)
댓글
댓글 쓰기