글리시
glibc원저작자 | 롤랜드 맥그래스 |
---|---|
개발자 | GNU 프로젝트, Ulrich Drepper에 의한 대부분의 공헌 |
초기 릴리즈 | [1] | 전
안정된 릴리스 | 2.36 / 2022년 8월 2일[2] |
저장소 | |
기입처 | C |
운영 체제 | Unix와 같은 |
유형 | 런타임 라이브러리 |
면허증. | 2001: LGPL-2.1 이후[a] 1992: LGPL-2.0 이후[b] |
웹 사이트 | www |

GNU C 라이브러리는 일반적으로 glibc로 알려져 있으며 GNU 프로젝트의 C 표준 라이브러리 구현입니다.이름에도 불구하고 현재는 C++(및 간접적으로 다른 프로그래밍 언어)도 직접 지원합니다.1980년대에 GNU 운영체제용 Free Software Foundation(FSF)에 의해 시작되었습니다.
GNU Lesser General Public [3]License에 따라 출시된 glibc는 무료 소프트웨어입니다.GNU C 라이브러리 프로젝트는 GNU 시스템 및 Linux를 커널로 사용하는 많은 시스템을 위한 핵심 라이브러리를 제공합니다.이러한 라이브러리는 ISO C11, POSIX.1-2008, BSD, OS 고유의 API 등을 포함한 중요한 API를 제공합니다.이러한 API에는 open, read, write, malloc, printf, getaddrinfo, dlopen, pthread_create, crypt, login, exit 등의 기본 기능이 포함됩니다.
역사
glibc 프로젝트는 1980년대 자유 소프트웨어 재단(FSF)에서 10대 [7]때 일했던 Roland McGrath가 주로 작성했습니다.1988년 2월에 FSF는 glibc가 ANSI [8]C에 필요한 기능을 거의 완료했다고 설명했습니다.1992년까지, ANSI C-1989와 POSIX.1-1990 기능이 구현되었고 POSIX.[9]2에서 작업이 진행 중이었다.1995년 9월 Ulrich Drepper는 glibc에 그의 첫 공헌을 했고 1997년까지 대부분의 커밋이 그에 의해 이루어졌다.Drepper는 수년간 유지보수 업무를 담당했으며,[10] 2012년까지 프로젝트에 대한 모든 커밋의 63%가 누적되었습니다.
2009년 5월에 glibc는 Git [10]저장소로 이행되었습니다.
2010년에는 GPL과 호환되지 않는 glibc에서의 Sun RPC 구현으로 인해 발생한 라이선스 문제가 해결되었습니다.BSD [11][12]라이선스로 Sun RPC 컴포넌트를 재라이센스함으로써 수정되었습니다.
2014년에 glibc는 s390의 [13]ABI 파손 버그로 고생했습니다.
롤랜드 맥그래스는 glibc를 시작한 지 30년 만인 2017년 7월 "명예 유지자로 선언하고 프로젝트에 직접 관여하지 않는다.지난 몇 달 동안, 아니 지난 몇 년간은 제가 필요없다는 것을 증명해 주셨습니다."[7]
버전 이력
대부분의 시스템에서는 lib 파일(예를 들어 /lib/libc.so.6)을 실행하여 glib 버전을 얻을 수 있습니다.
버전 | 날짜. | 메모들 | 도입 |
---|---|---|---|
0.1 – 0.6 | 1991년 10월 ~ 1992년 2월 | ||
1.0 | 1992년 2월 | ||
1.01 – 1.09.3 | 1992년 3월 ~ 1994년 12월 | ||
1.90 – 1.102 | 1996년 5월 ~ 1997년 1월 | ||
2.0 | 1997년 1월 | ||
2.0.1 | 1997년 1월 | ||
2.0.2 | 1997년 2월 | ||
2.0.91 | 1997년 12월 | ||
2.0.95 | 1998년 7월 | ||
2.1 | 1999년 2월 | ||
2.1.1 | 1999년 3월 | ||
2.2 | 2000년 11월 | ||
2.2.1 | 2001년 1월 | ||
2.2.2 | 2001년 2월 | ||
2.2.3 | 2001년 3월 | ||
2.2.4 | 2001년 7월 | ||
2.3 | 2002년 10월 | ||
2.3.1 | 2002년 10월 | ||
2.3.2 | 2003년 2월 | Debian 3.1 (서지) | |
2.3.3 | 2003년 12월 | ||
2.3.4 | 2004년 12월 | Linux Standard Base(LSB) 3.0용 최소값 | RHEL 4(업데이트 5) |
2.3.5 | 2005년 4월 | SLES 9 | |
2.3.6 | 2005년 11월 | Debian 4.0 (에치) | |
2.4 | 2006년 3월 | LSB 4.0의 경우 최소, 초기 inotify | SLES 10 |
2.5 | 2006년 9월 | 완전 지원.inify 지원.RHEL5 지원은 2020년 11월 30일 전( | RHEL 5 |
2.6 | 2007년 5월 | ||
2.7 | 2007년 10월 | Debian 5 (Lenny), Ubuntu 8.04 | |
2.8 | 2008년 4월 | ||
2.9 | 2008년 11월 | ||
2.10 | 2009년 5월 | LSB 5.0의 최소값.초기 psiginfo 지원 | |
2.11 | 2009년 10월 | SLES11은 2022년 3월에 장기 지원이 종료되었습니다. | SLES 11, Ubuntu 10.04, eglibc를 Debian 6에서 사용(스퀴즈) |
2.12 | 2010년 5월 | RHEL 6 | |
2.13 | 2011년 1월 | Debian 7에서 사용되는 eglibc 2.13(Wheezy) | |
2.14 | 2011년 6월 | ||
2.15 | 2012년 3월 | Ubuntu 12.04 및 12.10 | |
2.16 | 2012년 6월 | x32 ABI 지원, ISO C11 컴플라이언스, SystemTap | |
2.17 | 2012년 12월 | 64비트 ARM 지원 | Ubuntu 13.04, RHEL 7 |
2.18 | 2013년 8월 | C++11 지원이 향상되었습니다.인텔(R) TSX 잠금 해제 지원Xilinx MicroBlaze 및 IBM POWER8 마이크로아키텍처 지원 | 페도라 20 |
2.19 | 2014년 2월 | malloc에 대한 SystemTap 프로브.ppc32 및 ppc64에 대한 GNU 간접 함수(IFUNC) 지원._SVID_SOURCE 및 _BSD_SOURCE를 대체할 새로운 기능 테스트 매크로 _DEFAULT_SOURCE. 매뉴얼의 모든 기능에 대한 예비 안전 문서입니다.s390/s390x의 ucontext 및 jmp_buf의 ABI 변경. | Ubuntu 14.04, Debian 8(Jessie), OpenSUSE 13, SLES 12에서 사용되는 eglibc 2.19 |
2.20 | 2014년 9월 | 파일 설명 잠금 지원 | 페도라 21 |
2.21 | 2015년 2월 | 새로운 세마포 구현 | Ubuntu 15.04, Fedora 22 |
2.22 | 2015년 8월 | 원래 x86에서 실행되어 ARMv7-A, Unicode 7.0에서 실행되는 Google NaCl(네이티브 클라이언트) 활성화 지원 | 페도라 23 |
2.23 | 2016년 2월 | 유니코드 8.0 | Fedora 24, Ubuntu 16.04 |
2.24 | 2016년 8월 | 사용되지 않는 일부 기능이 제거되었습니다. | Fedora 25, Ubuntu 16.10 및 17.04, Debian 9(스트레치) |
2.25 | 2017년 2월 | 그getentropy 그리고.getrandom 기능 및<sys/random.h> 헤더 파일이 추가되었습니다. | 페도라 26 |
2.26 | 2017년 8월 | 퍼포먼스 향상(malloc의 스레드 단위 캐시), Unicode 10 지원 | Fedora 27, Ubuntu 17.10 |
2.27 | 2018년 2월 | 퍼포먼스 최적화RISC-V 지원 | Fedora 28, Ubuntu 18.04 |
2.28 | 2018년 8월 | statx ,renameat2 , Unicode 11.0.0 | Ubuntu 18.10,[14] RHEL 8.0.0,[15] Debian 10(버스터),[16] Fedora[17][18] 29 |
2.29 | 2019년 2월 |
| Ubuntu 19.04,[20] Fedora 30[21][22] |
2.30 | 2019년 8월 | Unicode 12.1.0, 다이내믹링커는,--preload 공유 객체를 프리로드하는 인수,gettid Linux에 기능이 추가되어 Minguo(중화인민공화국) 캘린더 지원, ja_에 새로운 일본 시대가 추가되었습니다.JP 로케일, 메모리 할당 함수가 다음 크기보다 큰 총 개체 크기에서 실패함PTRDIFF_MAX ; CVE-2019-7309 및 CVE-2019-9169 고정[23] | Ubuntu 19.10,[24] Fedora 31[25] |
2.31 | 2020년 2월 | 초기 C2x 표준 지원 | Ubuntu 20.04,[26] Debian 11(Bullseye),[27] Fedora[28] 32 |
2.32 | 2020년 8월 | Unicode 13.0, "버퍼 오버플로우 및 기타 범위 외 [29]접근 감지"와 같은 GCC 10의 경고를 개선하는 "access" 속성 | Ubuntu 20.10, Fedora 33 |
2.33 | 2021년 2월 | HWCAPS | Ubuntu 21.04, Fedora 34 |
2.34 | 2021년 8월 | libpthread, libdl, libutil, libanl이 libc에 통합되었습니다. | Ubuntu 21.10, RHEL 9.0.0,[30] Fedora 35 |
2.35 | 2월 2022년 | Unicode 14.0, C.UTF-8 로케일, 재기동 가능한 시퀀스.Intel MPX 지원 삭제. | Ubuntu 22.04, Fedora 36 |
2.36 | 2022년 8월 | 우분투 22.10 |
포크 및 변종
1994년에 Linux 개발자들은 glibc를 개발하였다.그들의 포크인 "Linux libc"는 1998년 경까지 별도로 유지되었다.저작권 속성이 불충분했기 때문에 변경 내용을 GNU [31]Libc로 병합할 수 없었습니다.언제 FSF가 1997년 1월에 glibc 2.0공개한 커널 개발자들 libc POSIX표준과 glibc 2.0의 우수한 준수로 인해 리눅스 중단했다.[32]glibc 2.0또한 더 좋은 국제화와 보다 심도 깊은 번역, IPv6기능, 64비트 데이터 접근, 다중 스레드 응용 프로그램 시설, 이후 버전 호환성,는다암호는 [33]더 휴대하기 쉬웠죠마지막으로 사용한 Linux libc 버전은 내부 이름(soname)을 사용했습니다.libc.so.5.이후 Linux의 glibc 2.x에서는 soname libc.so.6이[34][better source needed] 사용됩니다.
2009년에 Debian과 다수의 파생상품은 glibc에서 변형[36] eglibc로 [37]전환했다.Eglibc는 Freescale, MIPS, MontaVista 및 Wind [38]River로 구성된 컨소시엄의 지원을 받았다.임베디드 사용에 보다 적합하도록 변경 내용이 포함되어 있으며 Power와 같은 glibc에서 지원되지 않는 아키텍처에 대한 지원이 추가되었습니다.PC e500.eglibc 코드는 버전 2.20에서 [39]glibc로 Marge되었습니다.2014년부터 eglibc는 중단되었습니다.익토 프로젝트와 데비안도 데비안 [40]제시가 발매된 이후 glibc로 복귀했다.
운영위원회
2001년부터는 [41]Ulrich[42] Drepper가 주도적인 공헌자이자 관리자로서 도서관의 개발을 감독해 왔습니다.Ulrich Drepper에 의해 리차드 [43][44][45][46]스톨먼에 의한 적대적 인수 공작의 실패로 공공연히 묘사되었기 때문에 운영위원회 설치는 공개적인 논란에 휩싸였다.
2012년 3월 운영위원회는 Ryan Arnold, Maxim Kuvyrkov, Joseph Myers, Carlos O'Donell 및 Alexandre Oliva가 GNU 유지보수의 책임을 지도록 자체 해산하고 Drepper를 제거하기로 의결했습니다(단, 추가 의사결정 [47][48]권한은 없습니다).
기능
glibc는 단일 UNIX 사양, POSIX(1c, 1d 및 1j) 및 ISO C11, ISO C99, Berkeley Unix(BSD) 인터페이스, System V Interface Definition(SVID; 시스템 V 인터페이스 정의) 및 X/Open Portability Guide(XP)에 필요한 기능을 제공합니다.nt 시스템과 모든 X/Open UNIX 확장 기능을 함께 제공합니다.
또한 glibc는 GNU를 개발하는 동안 유용하거나 필요하다고 생각되는 확장 기능도 제공합니다.
지원되는 하드웨어 및 커널
glibc는 다양한 커널과 다양한 하드웨어 아키텍처를 실행하는 시스템에서 사용됩니다.가장 일반적인 용도는 x86 하드웨어 상에서 Linux 커널을 사용하는 시스템에서 사용되지만 공식적으로 지원되는[49] 하드웨어에는 32비트 ARM과 새로운 64비트 ISA(AArch64), ARC, C-SKY, DEC Alpha, IA-64, Motorola m68k, MicroBlaze, MIPS, Nios II, PA-C가 포함됩니다.공식적으로 Hurd 및 Linux 커널을 지원합니다.또한 OpenSolaris의 [50]분기형 버전뿐만 아니라 FreeBSD와 NetBSD의 커널에서 실행되는 패치 적용 버전이 있습니다(각각 Debian GNU/kFreeBSD와 Debian GNU/NetBSD 시스템이 구축됩니다).또한 BeOS 및 [51]Haiku에서는 (편집된 형태로) 사용되며 libroot.so이라는 이름이 붙습니다.
소형 디바이스에서 사용
glibc는 과거 Linus Torvalds나[52] 임베디드 Linux 프로그래머 등 다른 라이브러리보다 속도가 느리고 '블루드'하다는 비판을 받아왔다.이러한 이유로, 작은 설치 공간을 강조하는 몇 가지 대체 C 표준 라이브러리가 생성되었습니다.그러나 많은 소규모 디바이스 프로젝트에서는 애플리케이션 지원, 표준 컴플라이언스 및 완전성 때문에 작은 대체 솔루션보다 GNU libc를 사용합니다.예를 들어 Openmoko 및 iPaq용 익숙한 Linux 핸드헬드(GPE 디스플레이 소프트웨어 [54]사용 시) 등이 있습니다[53].
호환성 레이어
다른 생태계용으로 작성된 프로그램을 glibc 인터페이스 제공 시스템에서 실행할 수 있도록 하기 위한 호환성 레이어("심")가 있습니다.여기에는 Android의 Bionic용 호환성 계층인 libhybris와 Windows API에서 glibc 및 Unix와 유사한 시스템에서 사용할 수 있는 기타 네이티브 API에 대한 호환성 계층으로 볼 수 있는 Wine이 포함됩니다.
「 」를 참조해 주세요.
메모들
레퍼런스
- ^ Corbet, Jonathan (28 March 2012). "A turning point for GNU libc". LWN.net.
- ^ "GNU C 라이브러리 버전 2.36을 이용할 수 있게 되었습니다."; 저자명 문자열: Carlos O'Donell; 발행일: 2022년 8월 2일; 취득일: 2022년 8월 2일.
- ^ a b "sourceware.org Git - glibc.git/blob - Makefile". sourceware.org. Retrieved 10 June 2021.
LGPL-2.1-or-later in the headers
- ^ "sourceware.org Git - glibc.git/commit - Update to LGPL v.2.1". sourceware.org. 6 July 2001. Retrieved 10 June 2021.
LGPL-2.1-or-later in the headers
- ^ "glibc-1.04.tar.Z". 4 September 1992. Retrieved 22 December 2021.
- ^ "sourceware.org Git - glibc.git/commit - Initial import: Makefile". sourceware.org. 18 February 1995. Retrieved 10 June 2021.
LGPL-2.0-or-later in the headers
- ^ a b "Roland McGrath bows out as glibc maintainer [LWN.net]". lwn.net. 7 July 2017. Retrieved 8 July 2017.
- ^ "GNU's Bulletin, vol. 1 no. 4, February, 1988".
Most libraries are done. Roland McGrath [...] has a nearly complete set of ANSI C library functions. We hope they will be ready some time this spring.
- ^ "GNU's Bulletin, vol. 1 no. 12".
It now contains all of the ANSI C-1989 and POSIX.1-1990 functions, and work is in progress on POSIX.2 and Unix functions (BSD and System V)
- ^ a b Corbet, Jonathan (28 March 2012). "A turning point for GNU libc". LWN.net.
Of the nearly 19,000 commits found in the project's git repository (which contains changes back to 1995), over 12,000 were made by Ulrich.
- ^ "Glibc finally free software - The H Open: News and Features". H-online. Retrieved 19 September 2021.
{{cite web}}
: CS1 maint :url-status (링크) - ^ Phipps, Simon (2 September 2010). "Gnu/Linux: Finally, it's really free software". InfoWorld. Retrieved 19 September 2021.
{{cite web}}
: CS1 maint :url-status (링크) - ^ Corbet, Jonathan. "The glibc s390 ABI break [LWN.net]". LWN.net. Retrieved 17 March 2022.
- ^ "CosmicCuttlefish/ReleaseNotes - Ubuntu Wiki".
- ^ "Chapter 5. RHEL 8.0.0 release Red Hat Enterprise Linux 8".
- ^ "Chapter 2. What's new in Debian 10".
- ^ "Changes/GLIBC228".
- ^ "Red Hat Bugzilla – Bug 1598403".
- ^ "sourceware.org Git - glibc.git/blob - NEWS".
- ^ "DiscoDingo/ReleaseNotes - Ubuntu Wiki".
- ^ "Changes/GLIBC229".
- ^ "Red Hat Bugzilla – Bug 1653403".
- ^ "sourceware.org Git - glibc.git/blob - NEWS".
- ^ "EoanErmine/ReleaseNotes - Ubuntu Wiki".
- ^ "Changes/GLIBC230".
- ^ "Focal (20.04) : glibc package : Ubuntu".
- ^ "Chapter 2. What's new in Debian 11".
- ^ "Changes/GLIBC231".
- ^ "The GNU C Library version 2.32 is now available". sourceware.org. Retrieved 13 August 2020.
- ^ "Compilers and development tools, 9.0 Release Notes".
- ^ "History of glibc and Linux libc". Free Software Magazine. Retrieved 10 May 2021.
{{cite web}}
: CS1 maint :url-status (링크) - ^ "Forking: it could even happen to you". 12 September 2008.
the split between GNU LIBC and the Linux LIBC -- it went on for years while Linux stabilized, and then the forks re-merged into one project
- ^ Lee, Elliot (2001). "A Technical Comparison of glibc 2.x With Legacy System Libraries". Archived from the original on 11 April 2004.
- ^ "Fear of Forking essay, see "6. glibc --> Linux libc --> glibc"".
- ^ "EGLIBC: FAQ". www.eglibc.org. Retrieved 16 September 2021.
- ^ eglibc 개발자들은 eglibc가 glibc의 포크가 아니라 업스트림 glibc [35]프로젝트의 패치를 수용하는 변종임을 자신들에게 강조했다.
- ^ Vaduva, Alexandru (2016). Linux : embedded development: leverage the power of Linux to develop captivating and powerful embedded Linux projects : a course in three modules. Alex Gonzalez, Chris Simmonds. Birmingham, UK. p. 24. ISBN 978-1-78712-445-5. OCLC 960471438.
- ^ Stiebert, Julius (6 May 2009). "Debian wechselt zur Eglibc". golem.de. Retrieved 16 September 2021.
{{cite web}}
: CS1 maint :url-status (링크) - ^ Simmonds, Chris (2017). Mastering embedded Linux programming: unleash the full potential of embedded Linux (2nd ed.). Birmingham, UK. p. 26. ISBN 978-1-78728-885-0. OCLC 995052708.
- ^ Vaduva, Alexandru (2015). Learning embedded Linux using the Yocto project: develop powerful embedded Linux systems with the Yocto project components. Birmingham, UK. p. 29. ISBN 978-1-78439-519-3. OCLC 914797028.
- ^ "glibc homepage".
In 2001 The GNU C Library Steering Committee ..., was formed and currently consists of Mark Brown, Paul Eggert, Andreas Jaeger, Jakub Jelinek, Roland McGrath and Andreas Schwab.
- ^ "Ulrich Drepper". LinkedIn. Retrieved 13 June 2012.
- ^ online, heise. "Open-Source-Entwickler kritisiert Stallman". heise online (in German). Retrieved 16 September 2021.
{{cite web}}
: CS1 maint :url-status (링크) - ^ Drepper, Ulrich (26 June 2000). "RMS is at it again". sourceware.org. Retrieved 20 November 2015.
A few weeks ago RMS started the next attack on me (a single mail, followed by indirect tries to take influence, followed by another mail today). The essence is that he complains I am not following "GNU policies" and therefore have to be replaced by a steering committee of which I could be a part. Some of you (namely Roland and Andreas S.) probably know about this since he proposed both as other members of the committee. In addition there was Mark Brown listed (I know somebody of this name at IBM who would also fit in this group but I'm not sure whether it is really him.) Anyhow, I completely reject this. It is not helping at all, the opposite is true. First, I am not aware of any essential policies I'm violating. The only ones are that I'm not following orders from RMS which clearly have political intends (which is of course a sacrilege) and possibly that I do not care about Winblowz (if the latter counts at all). None of this will change in any way.
- ^ Drepper, Ulrich (15 August 2001). "glibc 2.2.4". sourceware.com. Retrieved 29 November 2015.
And now for some not so nice things. Stallman recently tried what I would call a hostile takeover of the glibc development. He tried to conspire behind my back and persuade the other main developers to take control so that in the end he is in control and can dictate whatever pleases him. This attempt failed but he kept on pressuring people everywhere and it got really ugly. In the end I agreed to the creation of a so-called "steering committee" (SC).
- ^ 2001년 8월 19일 slashdot.com의 rms-syslog-of-syslog-glibc-syslogs.
- ^ McGrath, Roland (26 March 2012). "glibc steering committee dissolving". Sourceware.org. Retrieved 13 June 2012.
- ^ Myers, Joseph S. (26 March 2012). "GNU C Library development and maintainers". Sourceware.org. Retrieved 13 June 2012.
- ^ "The GNU C Library machine maintainers".
- ^ Bartley, David; Spang, Michael. "GNU/kOpenSolaris (GNU libc/base + OpenSolaris kernel)". Retrieved 16 December 2008.
- ^ "Haiku Source".
libroot.so is not part of GNU project and is included in Haiku source code.
- ^ Torvalds, Linus (9 January 2002). "Posting to the glibc mailing list".
- ^ "OpenMoko components".
We will use glibc (not uClibC) ... The alternatives may save more space and be more optimized, but are more likely to give us integration headaches
- ^ "Re: [Familiar] Which glibc for Familiar 0.8.4 ?".
Question: which version of the GLIBC was used to build the Familiar 0.8.4 ? Answer: 2.3.3