임베디드 소프트웨어를 개발하면서 elf 파일에 대한 정보를 확인하기 위해서 objdump, readelf 와 같은 유틸들을 사용하곤 합니다. Linux 에서는 readelf 툴이 있어서 elf 파일에 대한 정보를 확인 할 수 있었습니다. 그런데 Windows 에서 elf 파일에 대한 정보를 확인 하고 싶어서 readelf 의 Windows 포팅이 있는지를 확인해 봤는데 TDM-GCC 를 설치하면 readelf 가 같이 설치 된다는 것을 알게 되었습니다. Windows 에 TDM-GCC 설치하는 방법은 아래 주소에서 확인 할 수 있습니다.

http://iamaman.tistory.com/2576

위 포스팅에서 tdm-gcc로 설치를 했었는데~ 아래 주소에 readelf 프로그램이 설치되어 있는 것을 확인 할 수 있었습니다.

TDM-GCC-64\bin\readelf.EXE

TDM-GCC 뿐만 아니라 MinGW 를 설치하면 bin 폴더에 objdump.exe, nm.exe 등과 같은 툴도 설치 되는 것을 확인할 수 있습니다.

readelf 를 사용하여 Windows CMD 창에서 elf 파일에 대한 정보를 확인해 보니 아래와 같이 나오는 것을 확인할 수 있었습니다.

readelf 와 같은 툴을 사용하기 위해 굳이 윈도우 환경에서 버추얼박스나 wol 등으로 리눅스를 설치할 필요는 없는 것 같습니다.



예전에는 Visual Studio Express 를 설치해서 MATLAB 에 필요한 C/C++ 컴파일러를 설치 했었지만 최근에는 Mingw 를 설치하면 되더군요.

아래 주소에서 Add-On 을 통해 MinGW-w64 Compiler 설치하는 방법을 소개 했었는데~

http://iamaman.tistory.com/1664

현재 회사 컴퓨터의 MATLAB 라이센스 Software Maintenance 가 유지되고 있지 않아서 Add-On 에서 TDM-GCC 설치를 할수 없게 막아 놨더군요.

아래 주소에서 TDM-GCC 를 설치했고 path 환경변수도 분명 등록을 했는데 MATLAB 에서 mex -setup 이 안 먹어서 어케 하나 하다가~

http://tdm-gcc.tdragon.net/download

아래 주소에서 MATLAB 에 TDM-GCC 를 설치하는 정확한 방법을 찾아서 기록 겸 공유 합니다.

https://stackoverflow.com/questions/39140398/install-mingw-w64-compiler-matlab2013a-or-2016a

1. 위와 같은 방법으로 TDM-GCC 설치후에~

2. 관리자 모드 CMD 에서

setx MW_MINGW64_LOC "C:\TDM-GCC-64" /m

3. MATLAB Command Window 에서

>> setenv('MW_MINGW64_LOC','C:\TDM-GCC-64')

>> mex -setup

MEX이(가) C 언어 컴파일에 'MinGW64 Compiler (C)'을(를) 사용하도록 구성되었습니다.

경고: 2^32-1개의 요소를 초과하는 MATLAB 변수를 지원하기 위해 ...(중략)


% 컴파일러 빌드 확인

>> copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),'.','f')

>> mex yprime.c

'MinGW64 Compiler (C)'(으)로 빌드됩니다.

MEX가 성공적으로 완료되었습니다.

>> yprime(1,1:4)

ans =

2.0000 8.9685 4.0000 -1.0947



윈도우에서 GCC 를 사용하고자 하는 경우 MinGW 를 사용하거나 Cygwin 을 설치하거나 또는 Virtual box 에 리눅스를 설치해서 사용할 수 있다.

 

아래 포스팅에서 TDM-GCC 설치 방법에 대해 소개한 적이 있는데~

  

2013/06/06 - [유틸] - MinGW 64bits 설치


오늘은 MinGW 뿐만 아니라 boost 라이브러리를 사용하고 싶었다.

 

현재 내 PC 환경은 윈도우 7 64비트이다.

 

찾아보니 아래 주소의 MinGW Distro 가 나왔고, x64-native, GCC 4.8.2, Boost 1.55.0 라는 특징을 가지고 있었다.

 

http://nuwen.net/mingw.html

 

또한 C++11 을 default 로 설정해 놓았다고 한다.

 

위 주소에 들어가서 아래 그림의 링크를 클릭해서 다운로드 받는다. 위에 링크된 mingw-11.6.exe 은 git 이 없는 버전이고

 

아래에 있는 mingw-11.6-without-git.exe 은 말 그대로 git 은 빠진 버전이다.

 

나는 git 은 따로 설치를 했었기에 아래에 있는 mingw-11.6-without-git.exe 를 다운로드 받았다.

 

설치는 굉장히 간단한데~ 다운로드 받은 mingw-11.6-without-git.exe 파일을 더블 클릭하고 아래 그림과 같이 path 를 잡아 주면 된다.

 

위 그림과 같이 최상위 폴더를 잡아주면 C:\ 하위에 MinGW 라는 폴더가 생긴다. 그래서 나는 C:\MinGW 에 설치했다.

 

윈도우에서 Codeblocks IDE 에서 boost library 를 사용하여 소문자를 대문자로 변환해 보았다.

 

소문자를 대문자로 변환하는 과정에서 아래 주소에서 확인한 boost 라이브러리의 to_upper() 함수를 사용했다.

 

http://stackoverflow.com/questions/735204/convert-a-string-in-c-to-upper-case

 

Codeblock 셋팅시에 Compiler 를 다음과 같이 방금 설치한 MinGW Distro 에 맞게 설정 해준다.

 

Compiler 의 search directory 역시 아래 그림과 같이 mingw 의 include path(C:\MinGW\include)를 추가해준다.

 

아래와 같이 코딩하고~

 

#include <iostream>

#include <boost\algorithm\string.hpp>

#include <string>

 

using namespace std;

 

int main()

{

 

string str = "Hello World";

 

string newstr = boost::to_upper_copy<string>(str); // 대문자로 변경후 새로운 변수에 저장

 

cout << "before upper : " << str << ",\t to upper : " << newstr << endl;

 

boost::to_upper(str); // // 대문자로 변경후 현재 변수에 저장

 

cout << "Str to upper : " << str << endl;

 

return 0;

}

 

F9 를 눌러서 Build And Run 을 수행해 보면 다음과 같이 정상적으로 동작 한다.



+ Recent posts