GLib
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
GLib는 GTK+ 프로젝트에서 분리되어 개발된 C 프로그래밍 언어용 라이브러리이다. 다양한 고급 데이터 구조, 스레딩, 메모리 관리, 메시지 전달, 로깅 등 다양한 기능을 제공하며, 크로스 플랫폼을 지원하여 여러 운영 체제에서 사용 가능하다.
더 읽어볼만한 페이지
- GTK - Pango
Pango는 텍스트 렌더링 라이브러리로, OpenType 기능을 지원하여 텍스트 렌더링의 유연성을 높였으며, 리눅스, GTK 툴킷, 모질라 제품군 등 다양한 소프트웨어에서 사용되고 2006년 Cairo에 통합되어 다양한 플랫폼에서 텍스트와 그래픽 렌더링을 지원한다. - GTK - GObject
GObject는 GNOME 프로젝트의 핵심 객체 지향 시스템으로, GType을 통한 런타임 정보 관리, 클로저와 시그널 기반 메시징 시스템을 갖추고 있으며, 다양한 언어 바인딩을 지원하여 CUI, 서버 애플리케이션 및 자유 소프트웨어 프로젝트에서 활용된다. - LGPL 라이선스 소프트웨어 - Qt (소프트웨어)
Qt는 C++로 작성된 크로스 플랫폼 애플리케이션 개발 프레임워크로, GUI, 멀티미디어, 네트워크 등 다양한 기능을 제공하며, 시그널과 슬롯 메커니즘과 Qt Creator 등의 개발 도구를 통해 데스크톱, 임베디드, 모바일 UI 개발에 널리 사용된다. - LGPL 라이선스 소프트웨어 - GTK
GTK는 GIMP를 위해 개발된 크로스 플랫폼 GUI 툴킷으로, 다양한 운영체제와 프로그래밍 언어를 지원하며 여러 데스크톱 환경 및 애플리케이션에서 활용된다. - C 라이브러리 - OpenSSL
OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다. - C 라이브러리 - SQLite
SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다.
| GLib - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 개요 | |
![]() | |
| 종류 | 라이브러리 |
| 라이선스 | LGPLv2.1 |
| 웹사이트 | GLib 공식 웹사이트 |
| 개발 | |
| 개발자 | 그놈 재단 및 기여자 |
| 작성자 | Shawn Amundson |
| 최신 버전 출시일 | }} |
| 상태 | 지원 중 |
| 기술 정보 | |
| 프로그래밍 언어 | C |
| 운영체제 | 크로스 플랫폼 (리눅스, 유닉스 계열, macOS, 윈도우 등) |
| 플랫폼 | 크로스 플랫폼 |
| 언어 | 다국어 지원 |
2. 기능
GLib는 메모리 관리, 자료 구조, 스레드 관련 기능, 문자열 처리, 국제화 등 다양한 기능을 제공하는 라이브러리이다. 하위 섹션에서 이미 자세히 다루고 있는 내용은 간략하게 요약하고, 그 외의 기능들을 추가적으로 제시한다.
- 핵심 기능 (간략하게): 메모리 청크, 연결 리스트, 해시 테이블, 동적 문자열, 배열, 균형 이진 트리, N진 트리, 쿼크(문자열과 고유 정수 식별자의 양방향 연결), 키가 지정된 데이터 목록, 관계, 튜플, 캐시, 스레드, 뮤텍스, 큐, 메시지 전달 및 로깅, 후크 함수 (콜백 등록), 타이머, 바이트 순서 변환 등을 제공한다.
2. 1. 핵심 기능
GLib는 다음과 같은 핵심 기능을 제공한다.- 메모리 청크, 이중 및 단일 연결 리스트, 해시 테이블, 동적 문자열 및 문자열 유틸리티(예: 어휘 스캐너, 문자열 청크(문자열 그룹), 동적 배열, 균형 이진 트리, N진 트리, 쿼크(문자열과 고유 정수 식별자의 양방향 연결), 키가 지정된 데이터 목록, 관계 및 튜플)와 같은 고급 데이터 구조를 제공한다. 캐시는 메모리 관리를 제공한다.
- 스레드, 스레드 프로그래밍 및 기본 변수 접근, 뮤텍스, 비동기 큐, 보안 메모리 풀, 메시지 전달 및 로깅, 후크 함수 (콜백 등록) 및 타이머와 같은 관련 기능을 제공하는 함수를 구현한다. GLib는 또한 바이트 순서 변환 및 I/O 채널과 같은 메시지 전달 기능을 포함한다.
GLib의 기타 기능은 다음과 같다:
- 표준 매크로
- 경고 및 어설션
- 모듈의 동적 로딩
GLib에 포함된 대표적인 기능은 다음과 같다.
| 기능 | 설명 |
|---|---|
| 기본적인 자료형과 그 상하한 값의 정의 | |
| 표준 매크로 | |
| 동적 메모리 할당 | |
| 경고, 어설션 | |
| 메시지 로깅 | |
| 타이머 | |
| 문자열 조작 | |
| gettext에 의한 국제화 | |
| 의사 난수 생성 | |
| 훅 함수 | |
| 플러그인 모듈의 동적 로딩 | |
| 스레드 | |
| 메모리 풀 | |
| 문자열의 자동 완성 | |
| 형 시스템 GType | |
| 객체 시스템 GObject | |
| Windows에서의 UNIX용 프로그램과의 호환 기능 |
GLib는 빈번하게 사용되는 자료 구조와 이에 대한 연산을 정의하고 있다. 주요 자료 구조는 다음과 같다.
- 메모리 チャン크 (메모리 청크)
- 양방향 및 단방향 연결 리스트
- 연관 배열 (해시 테이블 방식 구현)
- 가변 길이 문자열
- 가변 배열
- 문자열 チャン크 (문자열 그룹)
- 동적 배열
- 균형 이진 탐색 트리
- N분 트리
- 쿼크 (문자열과 고유한 정수 식별자를 대응시키는 것)
- 키가 있는 데이터 리스트 (문자열 또는 정수 식별자로 접근 가능한 데이터 요소군)
- 관계 및 튜플
- 구조체의 캐시
2. 2. 추가 기능 (일본어 위키 참고)
GLib는 다음과 같은 다양한 추가 기능을 제공한다.- 표준 매크로
- 경고 및 어설션
- 모듈의 동적 로딩
GLib에 포함된 대표적인 기능은 다음과 같다.
| 기능 | 설명 |
|---|---|
| 기본적인 자료형과 그 상하한 값의 정의 | |
| 표준 매크로 | |
| 동적 메모리 할당 | |
| 경고, 어설션 | |
| 메시지 로깅 | |
| 타이머 | |
| 문자열 조작 | |
| gettext에 의한 국제화 | |
| 의사 난수 생성 | |
| 훅 함수 | |
| 플러그인 모듈의 동적 로딩 | |
| 스레드 | |
| 메모리 풀 | |
| 문자열의 자동 완성 | |
| 형 시스템 GType | |
| 객체 시스템 GObject | |
| Windows에서의 UNIX용 프로그램과의 호환 기능 |
GLib 패키지는 5개의 라이브러리로 구성되어 있었으나, 이후 하나의 라이브러리로 병합되어 "GLib"으로 명명되었고 더 이상 독립형 라이브러리로 유지되지 않는다.[1] 원래 라이브러리는 다음과 같다.
또한, 메모리 청크, 이중 및 단일 연결 리스트, 해시 테이블, 동적 문자열 및 문자열 유틸리티 (예: 어휘 스캐너, 문자열 청크(문자열 그룹), 동적 배열, 균형 이진 트리, N진 트리, 쿼크(문자열과 고유 정수 식별자의 양방향 연결), 키가 지정된 데이터 목록, 관계 및 튜플)과 같은 고급 데이터 구조를 제공한다. 캐시는 메모리 관리를 제공한다.
GLib는 스레드, 스레드 프로그래밍 및 기본 변수 접근, 뮤텍스, 비동기 큐, 보안 메모리 풀, 메시지 전달 및 로깅, 후크 함수 (콜백 등록) 및 타이머와 같은 관련 기능을 제공하는 함수를 구현한다. GLib는 또한 바이트 순서 변환 및 I/O 채널과 같은 메시지 전달 기능을 포함한다.
3. 구성 요소
이 중 GLib, GObject, GIO는 소스 트리의 별도 하위 디렉토리에 계속 존재하며, 개별 구성 요소로 간주될 수 있다. 이들은 소프트웨어 스택으로 생각할 수 있는데, GObject는 GLib에 의존하고 GIO는 두 가지 모두를 사용하는 더 높은 수준의 기능을 제공한다.[1]
3. 1. 주요 구성 요소 (현재 소스 트리 기준)
GLib 패키지는 5개의 라이브러리로 구성되어 있었으나, 현재는 하나의 라이브러리("GLib")로 통합되었다. 기존의 라이브러리는 다음과 같다.
이 중 GLib, GObject, GIO는 소스 트리의 별도 하위 디렉토리에 계속 존재하며, 개별 구성 요소로 간주될 수 있다. 이들은 소프트웨어 스택으로 생각할 수 있는데, GObject는 GLib에 의존하고 GIO는 두 가지 모두를 사용하는 더 높은 수준의 기능을 제공한다.
GLib는 자주 사용되는 자료 구조와 이에 대한 연산을 정의하고 있다. 주요 자료 구조는 다음과 같다.
4. 역사
GLib는 현재 GTK로 이름이 변경된 GTK+(GTK+) 프로젝트의 일부로 시작되었다. 그러나 GTK+ 버전 2를 출시하기 전에 프로젝트 개발자들은 그래픽 사용자 인터페이스(GUI)가 아닌 GTK+의 코드를 분리하여 별도의 소프트웨어 번들인 GLib를 만들기로 결정했다. GLib는 다른 개발자들, 즉 GTK+의 GUI 관련 부분을 사용하지 않는 개발자들이 전체 GUI 라이브러리에 의존하는 오버헤드 없이 라이브러리의 비 GUI 부분을 사용할 수 있도록 별도의 라이브러리로 출시되었다.[1]
GLib는 크로스 플랫폼 라이브러리이므로, 이를 사용하여 운영 체제와 인터페이스하는 응용 프로그램은 일반적으로 주요 변경 없이 서로 다른 운영 체제에서 이식 가능하다.[1]
4. 1. 릴리스 역사
릴리스 날짜eventfd() 사용, GHashTable 설정 최적화, GObject 데이터 확장성