본문 바로가기

Developement

CodeBlocks 에 minGW w64 컴파일러 붙이기.

대부분 숙련된 개발자가 아니고서는 CodeBlocks 니 minGW 니 하는게 뭔소린지 모르는게 당연합니다.
하지만 좀 더 개발에 임하고 컴파일러가 뭔가를 깨닫기 시작하면 컴파일러의 소중함과 개발 환경의 중요성과 그에 따른 필요성 등을 깨닫게 되겠죠.
하지만 세상에 그런걸 혼자 알아서 다 하는 사람이 얼마나 있을까요? (저라면 귀찮아서 안할지도 ... )

그래서 저 하나 고생해서 소소한 도움이 되고자 CodeBlocks 와 minGW 64 를 함께 붙이는 작업을 그림과 함께 소개해 보고자 합니다.
CodeBlocks 의 경우 기본적으로 32ibt minGW (버젼 3 대) 를 포함하고 있는 패키지가 있습니다.
하지만 64bit 를 포함하는 것은 없죠 .

즉, 64bit minGW 를 붙이려면 직접 사용자가 붙여야 하는 노가다 작업을 좀 해야 한다는 말이 됩니다.
하지만 쫄지 마세요-
CodeBlocks 가 한글지원이 미흡한 점과 약간의 노가다를 필요로 한다는 것을 제외 한다면 이만한 IDE 가 없습니다.

먼저 준비해야 하는 것은?
1) 당연 CodeBlocks 를 받아서 설치 해 주세요.
2) minGW w64 를 다운로드 받습니다.

그런다음 해야 할 것은 CodeBlocks 를 설치 하기 전에 (또는 먼저 설치 해 놨다면 넘어가도 됩니다), minGW 64 를 특정 폴더에 먼저 풀어 두는 것이 편리하다는 것 입니다.
만약 CodeBlocks 를 minGW 64 를 먼저 설치 한 다음 설치 하게 된다면 알아서 찾아 내는 경우도 있습니다.

저의 경우는 컴파일러를 C:\Apps 안에 몰아 넣기 때문에 다음과 같이 위치 시켰습니다.
최신버젼의 minGW w64 를 설치 하셨다면 제가 만들어 놓은 위치 보다 뭔가 더 많을 수 있습니다.

그런다음 codeBlocks 를 이제 세팅 해야 겠죠?
codeBlocks 를 실행 합니다.
여기까진 별거 없습니다.
이제 minGW w64 를 등록하기 위해 메뉴중 Settings > Compiler and debugger settings 메뉴를 진입합니다.
아래와 같은 창이 하나 열리게 됩니다.
영어로 수많은 글이 있다고 쫄지 마세요.
여기서 신경 써야 할 것은 새로운 minGW 컴파일러를 등록하는 것 일 뿐입니다.
먼저 확인 해야 할 것은 Selected compiler가 GNU GCC Compiler 인지만 확인 합니다.
아니라면 GNU GCC Compiler 를 선택 하시고, Copy 버튼을 눌러서 새롭게 하나 복사 한다음 이름을 w64 용이라고 바꿔 보도록 하죠.

 Copy 버튼을 누르면 새로운 창이 뜨고 이름을 바꿔서 저장할 수 있습니다.
저는 다음과 같이 정했죠.
OK 버튼을 눌러서 저장합니다.
기본적으로 GCC 컴파일러 기본 속성을 다 가지고 가므로 어렵게 몽땅 세팅 할 필요는 없습니다.
저장하게 되면 알림창이 하나 뜨고 다음과 같이 나오죠.

The new compiler has been added! Don't forget to update the "Toolchain executables" page...
새로운 컴파일러가 추가 되었습니다! "실행파일 설정" 부분을 변경하는거 잊지 말아주셔요오~

네, Tab 중에 Toolchain executables 로 갑니다.
여기만 날로 바꿔줘도 돈다는 말이죠.

아마 minGW 를 기본으로 포함한 패키지를 설치 했다면 다음과 같이 설정이 되어 있을 겁니다.
여기서 우리가 해야 할 것은 64bit 용 path 로 바꿔 준 다음 실행파일들을 다 바꿔줘야 한다는 점 입니다.
약간의 노가다가 따르곘군요 -_-;
이걸 64 용으로 세팅 하면 다음과 같이 됩니다.
안타깝게도 gdb 나 make 는 64 용에서 포함되고 있지 않습니다.
이는 32 용으로 쓰던걸 쓸 수 있기 때문에 포함되지 않은듯 한데요 , 이 부분에 대해서는 직접 해 본다음 자체 트랙백으로 글을 써 보도록 해야 겠습니다. (보통 minGW 로 만드는 어플들은 디버깅 솔루션을 애용하지 않는듯 합니다만)
그래서 64에 없는 놈들은 그냥 비웠습니다.
이걸 저장하면 되는데, 기본으로 64비트를 쓰시려면 Set as default 버튼을 눌러서 기본 컴파일러로 설정해도 됩니다.

이젠 테스트를 해 봐야 겠죠.
빈 프로젝트를 만들되 그냥 console application 으로 만들어 봅시다.
그런다음 빌드 옵션에 다음과 같이 추가적인 것을 설정 해 줘야 합니다.
물론 이 옵션들은 64bit GNU GCC Compiler 의 기본 옵션으로 설정 해도 됩니다.
-m64 옵션은 64bit 코드를 생성한다는 것이고,
-mwin32 는 windows 헤더를 사용할 경우 definition 을 windows 에 맞추기 위한 것 입니다. (그렇다고 32bit 로 빌드되진 않습니다)

그런다음 main.c 에 다음 코드를 넣고 돌려 봅니다.


빌드를 해보면 다음과 같이 나오죠.
만약 32bit 로 컴파일 된 것이라면, windows32 라고 표기 되고, 구조체의 크기가 808 byte 가 아닌 404 byte 가 정상입니다. 하지만 64bit 로 컴파일 된 것이라면 위와같이 표시 되는 것이 맞겠죠.
이는 int 나 long 이 32bit 로 고정인 것에 비해 포인터 주소체계가 레지스터 크기인 64bit 를 가짐으로서 8바이트가 기본이 되는 것 때문에 출력이 다른 것 입니다.

단순한 32bit 어플리케이션은 컴파일러만 바꾸더라도 64bit 어플리케이션으로 만들 수 있는 반면, 포인터를 32bit 크기를 가지는 int 에 대입하여 처리하도록 만든 어플리케이션을 만든 경우엔 큰 문제가 발생하게 된다는 말이 됩니다.

아직 64bit 어플리케이션을 개발 하기엔 모자란 부분이 많이 있지만 차근차근 알아감에 따라 64bit 세상을 맞이할 준비를 잘 해 두는 것도 좋은 자세라 생각 되는군요~
지속적인 글을 쓸 수 있도록 해 보겠습니다.