GTK+ 환경에 대해서 몇가지 궁금한 사항이 있는데요..

leesunghee47의 이미지

1. gtk+를 이용해서 만든 상용제품들이 있는지요?? 많이들 쓰나요?


2. gtk+는 x위에서 돌아가는걸로 알고 있습니다. 근데 gtk directFB라는것은

x없이 바로 돌아가는 건지요? 그렇다면 gtk를 이용한 상용제품(임베디드 보드)들은

directFB를 이용한 건가요? 아님 Tiny X 위에 gtk를 올리나요?

3. kernel.guideline.co.kr에 보면 gtk+ 에 wxwindow를 올리는 프로젝트를 하는 것 같던데
요... qt와 비교한다면 gtk+는 qt/embedded 와 비슷하고, wxwindow는 qpe(qtopia)와
비슷한 역할을 하나요?? 그리고 wxGTK는 몬가요??

4. 마지막으로 .. 같은 플래폼의 gui개발이라도 여러 방식이 있는것 같습니다.
예를 들면.. gtk on directFB 를 쓰던가. 아님 tiny x 에다 gtk를 올리던가 하는 식으로요..
현재 가장 많이 쓰고 있는 방식이 어떤건가요? (약간은 구체적으로요^^ 죄송..삽질을 최소
화 하기위하여..ㅠㅠ)

ydongyol의 이미지

- 임베디드 리눅스를 위한 GUI 시스템
GUI 시스템의 종류는 일일이 언급할수 없을정도로 다양하다. 때문에 임베디드 리눅스에서 많이 사용되는 GUI시스템과 그 특징을 살펴보겠다.
(1) Tiny X
Tiny X는 메모리가 작고 성능이 떨어지는 임베디드 시스템을 위해 프레임 버퍼위에서 동작하도록 만든 작은 X 서버이다. 따라서 일반적인 X 윈도우 시스템에서 제공하는 특징을 대부분 공유하며, X용 개발환경이나 응용 프로그램을 그대로 사용할수 있다는 장점이 있다.
타이니 X는 수세의 지원에 힘입어 XFree86팀에 근무하던 케이스 패커드가 개발했으며 현재 XFree86에 기본으로 들어가 있다. 따라서 타이니 X를 구하기 위해선 XFree86패키지를 구해서 사용하면 된다.
Tiny X는 X 컨소시움이 제정한 X 라이센스를 따른다. 따라서 상업용으로 사용할 경우 특별히 붙는 제약이나 로열티는 없다.
다음 그림은 Tiny X에 MatchBox 윈도우 메니져를 올린 그림이다.
그림 2.8 MatchBox 윈도우 메니져
Fig. 2.8 MatchBox Window Manager

(2) MicroWindows
마이크로 윈도우즈는 마이크로소프트웨어 의 윈도우즈 API 와 비슷한 API를 가지고 있다. 때문에 윈도우 프로그램에 익숙한 개발자들에게 쉽게 다가설수 있다. 마이크로 윈도우즈는 알란 홀데이 데이비드 벨이 만든 미니-X 서버에 알란 콕스가 수정한 버전을 취합하여 클라이언트/서버 네트워킹 기능을 추가하면서부터 시작됬다. 그러다 그레그 헤어가 알란 홀데이 뒤를 이어서 나노구이 프로젝트를 맡아 여러 가지 확장 기능을 추가하기 시작하면서 본 궤도에 오른다. 마이크로 윈도우에 탑재된 Win32 API는 Windows API와 상당히 유사하므로, 마이크로 윈도우가 동작하는 환경으로 Windows API 응용 프로그램을 이식하는 작업을 쉽게 수행 할수 있다.
마이크로 윈도우즈는 몇몇 어셈블리 루틴을 제외하고는 C프로그래밍 언어로 작성했으며, 동작을 위해 특정 하드웨어나 운영체제에 의존하지 않으므로 이식성이 대단히 뛰어나다. 하드웨어 프레임버퍼를 직접 제어하는 방식을 사용해 동작을 위해 특정 운영체제나 가속기가 필요하지 않으며, 다른 하부 그래픽 라이브러리에 의존하지도 않는다. 실제로 마이크로 윈도우즈는 픽셀 읽고/쓰기, 수직/수평선 긋기, 팔렛트 제어만 가능하면 포직스를 지원하는 어떤 시스템에서도 동작할수 있다.
크기는 16비트 화면과 스크린 드라이버를 포함하여 64킬로바이트 미만이며, 32비트 시스템에서 가변 폰트를 포함하여 100킬로바이트 미만이다. 따라서 다른 윈도우 시스템에 비해 대단히 작고 효율적이므로 기억 공간이 작은 임베디드 시스템에 적합하다고 볼수 있다.
마이크로 윈도우즈가 체택한 라이센스는 MPL(Mozlla Public License)와 GPL이므로, 사용자 요구에 맟춰 선택해 사용할 수 있다.

(3) Embedded QT
마이크로소프트 윈도우즈, 애플 맥OS, X에서 교차 플랫폼 지원 라이브러리로 명성을 높인 트롤테크가 임베디드 시스템용으로 만든 버전이 임베디드QT 이다. 여러 가지 좋은 특성으로 인해 GTK+ 와 더불어 특히 유닉스 개발자들 사이에 널리 퍼져 있으며, 최근에는 임베디드 개발자들에게 급속도로 침투하고 있다.
임베디드 QT는 하부에서 프레임버퍼를 직접 제어하는 방식으로 Qt/X11 라이브러리가 지원하는 기능을 그대로 사용할수 있으며, 동일한 리눅스 환경이라면 원시 코드레벨에서 다시 컴파일하는 작업으로 응용 프로그램의 이식을 쉽게 끝낼수 있다. 개발 과정에서 qmake 와 QT 디자이너와 같은 개발툴을 사용할수 있어 개발측면에서 높은 점수를 줄수 있다. 하지만 반드시 C++프로그래밍 언어를 사용해야 한다는 단점이 있다.
크기는 기본적인 기능과 폰트를 합해서 4메가바이트 이상이 될 수 있다. 다른 GUI 시스템에 비해서 상당히 큰 느낌이 들지만 그만큼 많은 기능을 가지고 있다.

(4) Qt라이브러리
Qt는 C++ 기반의 GUI Library로서 Windows, Unix, Linux, Mac, Zaurus, iPaq,assiopeia, Generic PDA , 모두를 지원하며 소스코드의 호환을 보장한다. 이는 현재의 Window기반의 소스를 Linux나 Unix로 포팅하는 시간을 절약해 줄 뿐만 아니라, 향후 동일한 소스로 Windows와 X-Windows 실행 프로그램을 생산할 수 있는 강점을 갖고. 또한 자바와 같은 인터프리터 방식 코드가 아닌, 순수한 실행코드를 생성할 수 있다.
다음은 임베디드 리눅스에서 실행되는 QT Stack의 구조이다.

그림 2.9 QT 스택
Fig 2.9 QT Stack
(5) GTK+
GTK+는 공개소스 그래픽 소프트웨어인 GIMP를 만들기 위해 개발된 라이브러리 이다. 하지만 GNU GNOME 데스크탑에서 사용하는 표준 툴킷으로 자리를 잡으면서 GIMP뿐만 아니라 리눅스 GUI 툴킷의 대표로 인식되어 왔다. 그리고 현재 X11뿐만 아니라 마이크로소프트 윈도우즈, BeOS에서 동작하며 C/C++ 및 펄, 파이썬등 수많은 다른 프로그래밍 언어에서도 GTK+를 지원하고 있다. GTK+는 GUI와 관련이 없는 자료구조, 메모리 관리등의 기본 모듈로 이루어진 Glib, 저수준 그래픽 출력을 위한 GDK, 그리고 최종적으로 위젯들의 모음인 GTK로 이루어져 있다.
GTK의 라이센스는 LGPL로써 상용제품 개발에도 큰 문제는 없다. 단점은 X위에서 돌아가기 때문에 오버헤드가 있고, 필요한 라이브러리의 크기가 크다는 점이다.

--
Linux강국 KOREA
http://ydongyol.tistory.com/

--
Linux강국 KOREA
http://ydongyol.tistory.com/

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.