glib, gtk 팝업 사전 만들기 1화


glib, gtk 는 c 라이브러리임.


옛날에 gimp 를 만들던 개발자들이 gtk 를 분리하고 gtk 에서 glib 를 분리했다고 함.


https://ko.wikipedia.org/wiki/GTK%2B

https://ko.wikipedia.org/wiki/GLib


gtk 는 glib 를 사용하고 있어서 gtk 를 하려면 glib 를 반드시 알아야 함.

glib 는 c 라이브러리이지만 각종 동적 언어에서 사용가능하므로 c 를 반드시 알아야할 필요는 없지만,

여기서는 c 를 사용할 거임.


glib 는 glib, gobject, gio, gmodule 이렇게 구성되어 있음.

리눅스 터미널에서 아래처럼 명령하면 -lgmodule-2.0 -lglib-2.0 -lgio-2.0 -lgobject-2.0 나옴


$ pkg-config --libs glib-2.0 gobject-2.0 gmodule-2.0 gio-2.0

-Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0


glib 는 c 언어용 유틸리티 라이브러리라고 생각하면 이해하기 쉬움.

gobject 는 c 언어로 OOP 개념을 구현하는 라이브러리라고 생각하면 되구

gio 는 파일/네트웍/dbus 등 IO 작업용 라이브러리라고 생각하면 되구

gmodule 은 dlopen() 같은 걸 쓰기 편하게 만들어 놓은 모듈(플러그인) 제작용 라이브러리라고 생각하면 쉬움.


사람들이 c 어렵다고 하는 이유가, 포인터랑 c 표준 라이브러리에서 제공하는 기능이 적어서 직접 구현하거나

아니면 별도의 라이브러리를 공부해야 되어 어떤 걸 공부해야 할지 많은 고민을 하면서 아... c 는 어렵구나

이런 생각을 가지는 거 같음. 반면, 자바는 포인터도 없는데다 이것저것 다 들어있어서 편하다고 생각하는거 같구.


c 언어랑 glib, gtk 를 공부하고 포인터를 이해할 수 있는 정도면 간단한 GUI 어플은 뚝딱 만들 수 있지.

리눅스 데탑 필수 라이브러리가 glib, gtk 이기 때문에 glib, gtk 가 망할 수도 없구,

성능 이슈나 버그 문제는 자유/오픈소스/상업용 어디에나 있는 문제이기 때문에 그걸로 좋다 나쁘다 평가하기도 곤란하구.

그거 때문에 개발을 못하거나 그러진 않구, 그 기능을 하는 함수를 만들어 쓰면 되거덩.

유일한 단점이, LGPL 이라는거. BSD 계열이었다면 MS윈도 쪽에서도 폭발적으로 사용되지 않았을까...

상업용 업계에서 glib, gtk 프로젝트에 지원을 더욱 많이 해주지 않았을까... 그런 아쉬움 정도.

상업용 라이브러리들과 비교하면 LGPL인게 장점이기두 하지.


내가 옛날에 c 언어 모를 때, ruby 로 gtk 끌어다 쓰거나, java 로 GUI 어플을 만들곤 했었는데,

c, glib, gtk 를 공부하니까 워낙 편해서 자바 쓸 일이 없더라구.

ruby 는 프로토타입 만들 때나 간단한 작업, 자동화라던가, 소스코드 생성이라던가 이런거 할 때 쓰고

그리고 ruby 언어가 그냥 막 재밌음. 그래서 ruby 로 소소한 짤막한 스크립트 이것 저것 만들기두 하구 ㅋㅋ

어떻게 쓰다보니 루비 예찬이 되어 버렸네 헤헿

안 그래두 요새 매우 단순한 팝업 사전이 필요해서 ruby 로 만들려다가

ruby 로 gtk 끌어다쓰면 binding 함수명 따로 또 알아봐야 하니까

그게 시간 걸리고 귀찮아서 그냥 c, gtk 로 단순한 팝업 사전을 만들고 있는데...

glib, gtk 의 많은 부분을 다루진 않을 거구,

리눅스 환경 c 언어 초보자들도 맨땅에서 어떻게 리눅스용 어플을 만드는지 알 수 있도록

가급적 컴파일 가능하도록 하여 연재할거임!!

그러면서 마음속 깊이 숨겨진 관종 욕구도 풀구 ㅋㅋㅋ