'develop'에 해당되는 글 84건

  1. 2011.03.15 [sdl] SDL_MapRGB
  2. 2007.12.03 [c] access - 파일 사용자 권한 체크
  3. 2007.11.22 [qt4] Qt용 시리얼 관련 라이브러리
  4. 2007.11.19 [gtk] 한글 표시 하기
  5. 2007.11.08 Eclipse + mingw + qt4 windows에 구성하기
  6. 2007.11.06 Windows용 Glade로 Interface만 개발하기
  7. 2007.11.05 Windows에서 Dev-Cpp로 GTK+프로그래밍
  8. 2007.11.02 [wxWidget] Tutorial 1 - 071102
  9. 2007.11.01 [펌]MinGw, wxWidget, Code:Blocks를 이용한 C/C++ IDE 환경 구축
  10. 2007.08.08 readelf - 직접 ELF를 읽기 위한 툴

[sdl] SDL_MapRGB

Uint32 SDL_MapRGB(SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b)
색을 만든다.
ex) 
Uint32 yellow;
yellow = SDL_MapRGB(screen->format, 0xff, 0xff, 0x00);

'develop > SDL' 카테고리의 다른 글

점 찍기  (0) 2011.12.07
[sdl] SDL_FillRect  (0) 2011.03.16

[c] access - 파일 사용자 권한 체크

#include <unistd.h>

int access(const char *pathname, int mode);

mode : 하나 이상의 R_OK, W_OK, X_OK, F_OK로 구성된 mask
return : 설정된 mode가 받아들여지면, 0을 리턴,
            mode가 하나라도 거절이 되면, -1을 리턴하고 errno을 적절하게 설정


Error Code :

[qt4] Qt용 시리얼 관련 라이브러리

http://qextserialport.sourceforge.net/
QextSerialPort
1.1부터 Qt4 를 지원한다.
받으면 라이브러리가 소스 형태로 존재하기 때문에 컴파일을 해야 하는데,
윈도우와 Posix관련 소스가 define으로 구별되어 있기 때문에 운영체제에 맞게
선언 후에 컴파일 해줘야 한다.

[gtk] 한글 표시 하기

gchar *buf;
GError *error;

buf = g_convert("표시", 4,"UTF-8", "euc-kr", NULL,NULL,&error);

Eclipse + mingw + qt4 windows에 구성하기

Windows용 Glade로 Interface만 개발하기

GTK+ 의 단점이라면 역시 Interface 구성하는 걸 꺼다.

Window 만들어야지 테이블 또는 박스 구성해서 붙여야지, widget들 배치해야지 여기다가 각 위젯 속성까지

지정하기 시작하면 간단한 notepad같은 텍스트 에디터 interface 구성하는데 만도 한참이다.

그래서 생각한 해결책이 windows용 glade로 interface만 구성하고 세부적인 개발은 dev cpp를 활용하는 방식이다.

모 이 방법도 문제가 없는 게 아닌 게 glade이 넘이 build해서 나온 소스를 보면 참 개판으로 해 논다.

그래도 우짜겠냐, 손으로 열심히 때려 넣는 것 보다는 편한 걸

윈도우용 gtk+ development environment를 다운 받으면 glade가 포함되어 있다.

요넘으로 해결하자.

http://gladewin32.sourceforge.net

Windows에서 Dev-Cpp로 GTK+프로그래밍

MS-Window에서 Dev-C++(DevCpp) 로 GTK+ 으로 프로그래밍 하기

C도 초보고 gtk+도 초보입니다. 하지만 셋팅을 하는 동안의 과정을 간략하게 정리하고자 합니다.

Dev-C++은 설치되었다는 전제하에서 설명하겠습니다. (참고로 Dev-C++의 주소는 http://bloodshed.net/index.html 입니다.)

Dev-C++을 한글환경에서 설명할 것이기 때문에 한글환경이 아니라면, 메뉴의 'Tools' -> 'Environment Options' 에서 'Interface' 탭에 있는' Language'에서 'Korea(한국어)'를 선택하세요.

  1. GTK+ 설치를 위한 사전 작업

GTK+는 다른 라이브러리들과 의존성을 가지기 때문에 사전에 의존성을 가지는 라이브러리들을 설치해주어야 합니다.

라이브러리 목록은 다음과 같습니다.

  • Glib
  • atk
  • Pango
  • zlib
  • libpng
  • libpixman
  • Cairo

위 7개의 라이브러리를 먼저 설치해 주어야 합니다. 마지막에 있는 Cairo는 바로 위 두개(libpng, libpixman)에 의존성을 가지므로 Cairo를 설치하기 전에 두개의 패키지를 먼저 설치하여야 하고, libpng는 zlib에 의존성을 가지므로 zlib를 먼저 설치해야 합니다. 일단 이부분은 접어두고 총 7개의 라이브러리를 먼저 설치해야 합니다. 아래 부분에서 자세히 설명을 할테니 넘어갑시다.

설치를 위해 Dev-C++에서 제공하는 패키지 업데이를 진행하면 됩니다.

메뉴의 '도구' -> '프로그램 업데이트'를 선택하면 아래와 같이 하나의 창이 뜹니다.


'Select devpak server'에서 'Devpaks.org Community Devpaks'를 선택합니다.

그리고, 아래의 'Check for updates'를 클릭합니다. 그려면 프로그래스바가 진행되고 'Available updates list'에 업데이트할 수 있는 목록이 작성됩니다. 그리고, 'Check for updates'는 'Download Selected'로 바뀌게 됩니다.

설치순서는 아래와 같습니다.

  1. zlib
  2. libpixman, libpng
  3. atk, cairo, glib, pango

순서대로 각 항목에 체크를 하고 'Download Selected'를 눌러주면 됩니다. (한 항목에 두개 이상의 패키지가 있으면, 체크란에 두개 다 체크하고 'Download Selected'를 눌러주면 됩니다.)

간단한 대화창과 함께 설치가 완료되면, 이제 준비작업은 끝났습니다. (사실 준비작업이라 말하기는 좀 그렇지만...)

  1. GTK+ 설치

이제 gtk+를 체크하고 설치하면 됩니다.(Download Selected)

이제 gtk+를 프로그래밍을 하기 위한 준비는 끝났습니다. 그런데, 실행파일을 만들기 위해서는 dll 파일들이 필요합니다. 이 파일들을 gimp에서 다운받을 수 있습니다.

윈도우를 위한 gimp의 주소는 http://gimp-win.sourceforge.net/ 입니다. 다운로드 주소는 http://gimp-win.sourceforge.net/stable.html 입니다. 그런데...

GTK+ 2 Runtime Environment를 다운받아야 하는데, 목록이 두개가 있습니다.

저는 XP환경이라 위에 있는 (version 2.10.6 for Windows 2000 and newer)을 다운받았지만, 압축을 풀려니 계속 에러가 나네요. 그래서 어쩔 수 없이 그 아래에 있는 (version 2.6.10-20050823, for Windows 98/ME and NT4)를 다운받았습니다. 이걸 다운받고 압축풀고 설치를 시작하면 간단한 대화상자가 나오고, 설치를 하면됩니다.

-->> 2007.11.05 현재는 old version으로 바꼈다.

-->> gtk+를 설치 후에 마지막에 언어설정을 할 껀지에 대한 옵션이 있다. 차후에 하기 힘드니 지금 Korean(ko)로 둘다 설정하도록 하자.

  1. GTK+ 프로그래밍 해보기

메뉴에서 '파일' -> '새로 만들기' -> '프로젝트' 를 선택합니다. 그러면 아래와 같이 창이 뜹니다.


Basic 탭에서 GTK+ Application, 프로젝트명을 적당히 적어주고 언어는 C를 선택합니다. 그리고 확인을 누르면 GTK+ 프로그래밍을 할 수 있게 소스창이 구성됩니다.

메뉴에서 '실행' -> '컴파일' 그러면 컴파일이 되고 실행파일이 만들어집니다. 이제 GTK 프로그램이 완성되었습니다.

이제 http://gtk.org에서 튜토리얼을 보면서 이것저것 공부하면 됩니다. ^^

(그런데, '실행' -> '실행'을 눌러주면 먹통일 때가 있습니다. 소스를 컴파일 한 곳에서 가서, 실행파일을 어떤 dll파일이 필요하다는 에러메시지가 뜹니다. 이때를 위해 조금전에 GTK+ Runtime Environment를 설치한 것입니다. 'Program Files'- > 'Common Files' -> 'GTK' -> '2.0' -> 'bin' 폴더에 보면 많은 dll파일들이 있습니다. 그곳에서 dll 파일을 찾아 실행파일이 있는 곳에 복사하고 실행파일을 더블클릭하면 이제 실행이 됩니다. 패스를 걸어주셔도 됩니다.)

[wxWidget] Tutorial 1 - 071102

함수명 : _T

wxChar _T(char ch)

원형 : const wxChar * _T(const wxChar ch)

This macro is exactly the same as wxT and is defined in wxWidgets simply because it may be more intuitive for Windows programmers as the standard Win32 headers also define it (as well as yet another name for the same macro which is _TEXT()).

Don't confuse this macro with _()!

 

* File Select Dialog Example

wxFileDialog dialog(            // dialog 생성과 동시에 초기화 시킨다.

this,

_T("File Open"),

wxEmptyString,

wxEmptyString,

_T("bin files (*.bin)|*.bin")

);

dialog.SetDirectory(wxGetHomeDir());    // file dialog가 열릴 위치를 지정 한다.(현재는 현재 디렉토리로 설정)

dialog.CenterOnParent();        // file diloag가 열릴 때 창의 위치 설정

 

if (dialog.ShowModal() == wxID_OK)    // file dialog를 modal형식으로 열고, 닫히고 나서의 리턴값이 OK인 경우

{

wxString info;

info.Printf(_T("Full File name : %s\n")

_T("Path : %s\n")

_T("Name : %s\n"),

dialog.GetPath().c_str(),

dialog.GetDirectory().c_str(),

dialog.GetFilename().c_str());

wxMessageDialog dialog2(this, info, _T("Selected File"));

dialog2.ShowModal();

}

* Windows Layout Tips

    * wxPanel위에 다른 위젯들을 올릴 수 있다.

[펌]MinGw, wxWidget, Code:Blocks를 이용한 C/C++ IDE 환경 구축

MinGW, wxWidget, Code:Blocks를 이용한 C/C++ IDE 환경 구축 소프트웨어

2006/05/19 13:49

http://blog.naver.com/sbshin80/60024488345

첨부파일CodeBlocks_Configuration-sbshin80.pdf

MinGW, wxWidget, Code:Blocks를 이용한 C/C++ IDE 환경 구축

지은날 : 2006년 5월 16일
지은이 : 이민우

필자는 십여년간 VC++를 이용하여 윈도우 응용프로그램을 개발해 왔다. 그러나 리눅스에 관심을 갖게 되면서 오픈 소프 프로젝트들에도 관심을 갖게 되었고, 사회 공용 자원들에 대한 배타적인 소프트웨어들에 대한 대안을 찾는게 취미가 되었다.

리눅스에서는 이런 오픈 소스 프로젝트들이 많이 활성화 되었지만, 윈도우에서는 여전히 배타적 라이센스를 갖는 상용 프로그램들이 널리 사용되는 것에 대해서 안타까운 생각을 갖고 있으며, 특히 윈도우 응용 프로그램을 개발하기 위해선 Visual Studio에 전적으로 의존할 수 밖에 없는 상황을 개척해 보고자, 여러 가지 방법을 찾던 중, Eclipse + CDT + MinGW + wxWidget을 이용한 방법을 시도해 보았으나, Eclipse가 자바 기반으로 동작되다 보니 유용하고 뛰어난 기능이 많음에도 불구하고, 너무나 많은 메모리를 차지하고 시스템의 전반적인 성능을 매우 떨어뜨리는 상황을 극복할 뚜렸한 대안이 없어, 새로운 방법을 찾게 되었다. 그 유력한 대안이 바로 이 글에서 다루고자 하는 것이다.

이 방법은 윈도우 뿐만 아니라 리눅스에서도 적용이 가능하나, 필자가 시도해 보지는 않았다. 가까운 시일 내에 리눅스에서도 시도해 볼 작정이며, 설정상의 차이점 등을 시간이 허락하는 대로 문서에 반영할 예정이다.

IDE 구축에 필요한 패키지들

♦ MinGW 컴파일러 : 윈도우용 컴파일러(gcc, make, binutils)
♦ wxWidget : GUI 라이브러리
♦ Code::Blocks : 통합 개발 환경

설치 전 요구 사항
먼저 IDE를 설치할 기본 디렉토리를 만든다. 필자의 경우, C:\IDE에 만들었다. 이 디렉토리는 문서 전체에 걸쳐 로 대체되어 표시된다.

1. MinGW 설치

Code::Blocks 는 MinGW를 포함한 배포판과 순수 Code::Blocks 배포판을 제공한다. 전자의 경우, MinGW를 따로 설치할 필요가 없으나, 필자는 패키지별 독립성을 훼손하지 않기 위하여 각 패키지별로 별도로 설치하였다.

♦ MinGW 내려받기 사이트에서 최신의 MinGW 파일을 내려받아서 밑에 설치한다.
♦ 내려받기 주소는 http://prdownloads.sf.net/mingw/MinGW-5.0.2.exe?download 이다.
- 여러가지 파일들이 있으나, MinGW-5.0.2.exe 에 우리가 필요한 대부분의 파일들이 들어있다.
♦ 내려받은 MinGW-5.0.2.exe 프로그램을 저장할 임의의 폴더를 하나 만든 후, 그 곳에 이 파일을 저장한다.
♦ 프로그램을 실행하면, 압축되어 포함된 각종 패키지들이 압축 해제된다.
- “MinGW-5.0.2.exe”를 실행하고, 설치 옵션에서 "Custom"을 선택하고,
- "MinGW base tools", "g++ compiler", "MinGW Make" 구성 요소를 선택한다.
- 설치 디렉토리에 \MinGW를 선택한 다음, 나머지는 설치 과정에 따른다.

이전 버전의 MinGW에서는 gdb가 포함되어 있었으나, MinGW-5.0.2에는 gdb가 포함되어 있지 않다. 따라서 gdb를 내려받아 MinGW가 설치된 디렉토리에 설치하여야 한다.
♦ 내려받기 주소는 http://prdownloads.sf.net/mingw/gdb-6.3-2.exe?download 이다.
- 설치 화면에서 설치 디렉토리에 \MinGW 를 선택하고, 나머지는 설치 과정에 따른다.

♦ 성공적으로 설치가 끝나면 PATH 환경 변수에 다음 디렉토리를 등록해 줘야 한다.
- "제어판" -> "시스템" -> "고급" -> "환경 변수" -> "시스템 변수" 에서 PATH에 추가 한다.
☞ \MinGW\bin;

2. wxWidgets 설치

http://www.wxwidgets.org 사이트에서 wxWidgets을 내려받는다.
♦ 내려받을 프로그램은 http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.6.3-Setup-1.exe 이다.
♦ 위 프로그램을 실행하면 설치 화면이 나오는데, 설치 디렉토리만 \wxWidgets-2.6.3 로 설정해주고 나머지는 설치 과정에 따른다.
♦ wxWidgets 패키지가 성공적으로 설치되었으면, 사용자 환경 변수에 WXWIN 이 등록되어 있을 것이다. 이것을 시스템 변수로 옮긴다(굳이 안해도 상관없으나 필자의 경우, 전역적 환경을 구축하고자 변경하였다).

필자가 이 패키지를 설치하고, 조금 헤맸는데, 그 이유는 이 패키지는 소스 형태로 배포되고, 바이너리 라이브러리들을 제공하지 않는 것을 몰랐기 때문이다. 따라서, 패키지 설치가 끝나면 "1. MinGW 설치" 에서 설치한 컴파일러를 이용하여 라이브러리들을 컴파일해야 한다.

♦ 먼저 도스창을 하나 연다..
♦ make 버전을 다음 명령으로 확인한다.
- Prompt> mingw32-make -v # GNU make 3.80인지 확인한다.

2.1 wxWidgets 빌드

♦ 이제 wxWidgets를 컴파일하기 위하여 wxWidgets 디렉토리로 이동한다.
- Prompt> cd C:
- Prompt> cd %WXWIN%\build\msw
♦ 먼저 소스에 대한 크린업을 수행한다(아래 명령들은 모두 한 줄로 이어서 입력하여야 한다).
- Prompt> mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean
주:) 옵션이 유니코드에 릴리즈 빌드라는 점에 주목하라.
♦ 모든 것이 깨끗해졌으면 이제 컴파일을 시작한다.
- Prompt> mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release
주:) 여기 사용된 옵션들은 Code::Blocks에서 공식적으로 지원되는 옵션이며, 다른 옵션들을 원한다면 Code::Blocks를 재구성하여야 하고, 그러기 위하여 또다른 삽질이 필요하다.

이 과정은 꽤 시간이 걸린다. 이 시점에서 커피나 한잔 마시자. 나의 팬티엄-M 1.5 GHz 노트북에서 30분 정도 걸렸다.

3. Code::Blocks 설치

http://codeblocks.org 사이트에서 "Code::Blocks IDE, without compiler" 윈도우용 바이너리를 내려받는다.
♦ 내려받을 프로그램은 load... 이다.
- 이 바이너리 배포판은 기능상 문제가 있기 때문에 실제 사용하지는 않지만, 기본 설정 상태를 유지하기 위하여 설치한다.
♦ codeblocks-1.0rc2.exe를 실행하고, 옵션에서 모든 항목을 선택하되, SVN/CVS support for projects는 제외한다(아직 SVN/CVS 지원 기능에 버그가 있다).
♦ 설치 디렉토리를 \CodeBlocks 로 하고, 나머지는 설치 과정에 따른다.
♦ 최근의 Nightly Build 패키지를 내려 받는다.
- http://forums.codeblocks.org/index.php?board=20.0 로부터 최근의 빌드 패키지를 선택하고, Windows용 Nightly build 패키지를 내려 받는다. 필자가 내려 받은 패키지는 http://download.berlios.de/codeblocks/CB_20060515_rev2451_win32.7z 이다.
♦ 또한 Code::Blocks를 위한 wxWidget DLL을 내려 받는다.
- 내려받을 파일은 http://download.berlios.de/codeblocks/wxmsw26u_gcc_cb.7z 이다.
♦ 7z 파일은 7-zip 유틸리티로 압축 해제 할 수 있다. 내려받기 주소는 http://www.7-zip.org 이다.
♦ 내려받은 CB_20060515_rev2451_win32.7z 파일을 특정 디렉토리에 압축 풀고, 모든 파일을 \CodeBlocks\ 에 복사하여 기존 파일들을 덮어씌운다.
♦ 내려받은 wxmsw26u_gcc_cb.7z 파일을 특정 디렉토리에 압축 풀고, wxmsw26u_gcc_cb.dll 파일을 \CodeBlocks\ 에 복사한다.
♦ 기존의 \CodeBlocks\ 에 있는 wxmsw26_gcc_cb.dll 는 삭제한다.

4. Code::Blocks 설정

♦ CodeBlocks IDE를 실행한다.
♦ File -> New Project를 실행한다.
- wxWindgets application wizard를 선택한 후, "start wizard" 를 누른다.

- 프로젝트를 생성할 위치와 프로젝트 이름을 입력한다.

- wxWidgets의 위치를 기술한다.

- Global Variable Editor에 wx Variable에 대한 Base Directory를 입력한다.

- 마지막 옵션들을 디폴트로 놔두고 "Finish"를 누른다.

- 메뉴에서 "Build"를 해본다. 오류 없이 진행되면 wxTest.exe가 생성된다.

♦ 생성된 실행 프로그램은 실행하기 위하여 wxmsw26u_gcc_custom.dll 파일이 필요하다. 이 파일은 C:\IDE\wxWidgets-2.6.3\lib\gcc_dll 에 있으며, 이 디렉토리를 PATH 환경 변수에 추가하거나 c:\Windows\System32\ 에 복사한다.
- 프로그램을 실행해 본다. 화면에 나오면 성공이다.

♦ 프로그램이 콘솔창과 함께 뜰 경우, Project/targets options에서 target opntion을 GUI application으로 바꾸고, "Pause when execution ends"를 꺼준 후, 리빌드 한다.
주:) PATH 환경 변수를 변경할 경우, PATH 를 사용하는 프로그램을 재 실행해 주어야 변경된 환경 변수값을 읽을 수 있다.
♦ 이 글은 UNICODE를 사용하는 것을 전제로 작성하였기 때문에, 에디터 설정 역시 유니코드를 지원하도록 설정하여야 한다.

이상으로 MinGW, wxWidget, Code:Blocks를 이용한 C/C++ IDE 환경 구축에 관한 방법을 알아보았다.

필자는 우리나라의 데스크탑 환경이 마이크로소프트 일색인 특정 기업의 독점적 구조를 탈피하기 위해서, MS에 종속적인 개발 환경에서 탈피하여 특정 OS에 독립적인 프로그램들이 많이 나오기를 바란다. 그러기 위해서는 개발 환경이 우선 MS 종속을 탈피해야 한다고 생각한다. 이 글이 어느 정도 필자의 바램을 충족시켜 주기를 기대하면서 글을 마칩니다.

'develop' 카테고리의 다른 글

Windows에서 Dev-Cpp로 GTK+프로그래밍  (0) 2007.11.05
[wxWidget] Tutorial 1 - 071102  (0) 2007.11.02
readelf - 직접 ELF를 읽기 위한 툴  (0) 2007.08.08
c언어 가변 인자 va_list  (0) 2007.08.07
공개 프로젝트 모음  (0) 2007.07.05

readelf - 직접 ELF를 읽기 위한 툴

readelf 는 BFD 라이브러리(Binary File Descriptor Library : 다양한 형식의 오브젝트 파일의 호환성을 위한 GNU 프로젝트의 주 메커니즘.)를 이용하지 않고 직접 ELF를 읽기 위한 툴이다. 그래서 objdump 보다 상세한 정보를 얻을 수 있다. ELF 헤더 출력 -h : ELF 파일 헤더 -l : 프로그램 헤더 -S : 섹션 헤더 -e : 위 세 가지 헤더 ELF 정보 출력 -s : 심볼 테이블 -r : 재배치 정보 -d : 동적 세그먼트 -V : 버전 섹션 -A : 아키텍처 의존정보 -I(아이) : 버킷 리스트 길이 히스토그램 -a : 모든 헤더 및 정보 -n : 코어 노트(core notes) -u : unwind 정보 일반적으로 심볼 정보는 심볼 섹션에 있는 심볼 정보를 이용하지만 -D 옵션을 사용하면 동적 섹션에 있는 심볼 정보를 이용 ELF 섹션 덤프 -x 옵션을 이용해 지정한 섹션의 내용을 덤프할 수 있다. 섹션은 섹션 번호로 표시하고, -S 옵션으로 출력된 섹션 헤더에 섹션 번호가 표시된다. ex) # readelf -S /bin/ls .interp의 섹션 번호는 1이고, 내용을 보기위해서 다음과 같이 한다. # readelf -x1 /bin/ls
prev 1 ··· 3 4 5 6 7 8 9 next