新聞中心
在Linux系統(tǒng)中,glibc(GNU C Library)是一個(gè)非常重要的軟件庫,用于提供對C語言標(biāo)準(zhǔn)庫的支持,同時(shí)也是運(yùn)行Linux應(yīng)用程序所必需的。在Linux發(fā)行版中一般會默認(rèn)安裝glibc庫,而不同的glibc版本則會帶來不同的功能和性能特征。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了賓縣免費(fèi)建站歡迎大家使用!
本文將詳細(xì)介紹Linux glibc版本的各項(xiàng)特征,包括不同版本的功能、性能、兼容性等方面。
一、glibc的版本歷史
首先我們可以回顧一下glibc的版本歷史。其最早的版本可以追溯到1991年,當(dāng)時(shí)是在GNU項(xiàng)目下開發(fā)的一個(gè)C語言庫。在1992年2月,glibc的之一個(gè)公開版本v1.0發(fā)布。此后,隨著時(shí)間的推移,glibc的版本得到了不斷的更新和改進(jìn)。
以下是glibc的一些重要版本和特征:
– glibc v1.0:1992年發(fā)布的之一個(gè)公開版本
– glibc v2.0:1996年發(fā)布,引入了多線程支持、Locale支持等功能
– glibc v2.2:2023年發(fā)布,引入了NPTL線程庫、IPv6支持、符號版本等功能
– glibc v2.3:2023年發(fā)布,引入了POSIX標(biāo)準(zhǔn)、C99標(biāo)準(zhǔn)等功能
– glibc v2.4:2023年發(fā)布,引入了新的malloc實(shí)現(xiàn)、64位ABI等功能
– glibc v2.5:2023年發(fā)布,引入了新的getaddrinfo實(shí)現(xiàn)、FORTIFY_SOURCE等功能
– glibc v2.9:2023年發(fā)布,引入了GNU hash表、動(dòng)態(tài)符號表等功能
– glibc v2.11:2023年發(fā)布,引入了統(tǒng)一的ISO C95/C99/C11語言標(biāo)準(zhǔn)庫、新的定時(shí)器實(shí)現(xiàn)等功能
– glibc v2.25:2023年發(fā)布,引入了AT_RANDOM指針隨機(jī)化、性能優(yōu)化等功能
二、glibc版本的功能特征
在Linux系統(tǒng)中,不同的glibc版本會帶來不同的功能特征。下面我們就來一一介紹各個(gè)版本的主要功能。
(1)glibc v1.0
作為glibc的之一個(gè)公開版本,它主要提供了C語言標(biāo)準(zhǔn)庫的支持,包括字符串處理、文件操作、數(shù)學(xué)計(jì)算、進(jìn)程控制等各種常用操作。不過,這個(gè)版本還沒有支持多線程,也沒有支持國際化(i18n)。
(2)glibc v2.0
glibc v2.0是一個(gè)重要的版本升級,它引入了很多新的功能。其中最重要的是多線程支持,包括pthread線程庫的引入和相關(guān)API的實(shí)現(xiàn)。此外,這個(gè)版本還引入了Locale支持,支持多國語言環(huán)境和編碼方式。
(3)glibc v2.2
在glibc v2.2中,引入了NPTL(Native Posix Thread Library)線程庫,替代了之前的pthread實(shí)現(xiàn),從而提高了多線程的性能和穩(wěn)定性。此外,這個(gè)版本還增加了對IPv6地址的支持,提供了新的getaddrinfo和getnameinfo函數(shù),以及一些新的網(wǎng)絡(luò)庫函數(shù)。
另外,glibc v2.2還引入了符號版本,用于解決庫的版本問題。這個(gè)特性可以讓不同版本的函數(shù)在同一個(gè)二進(jìn)制文件中同時(shí)存在,并且根據(jù)不同的鏈接選項(xiàng)選擇不同的版本。
(4)glibc v2.3
在glibc v2.3中,主要引入了POSIX標(biāo)準(zhǔn)和C99標(biāo)準(zhǔn)的支持。該版本支持了一些新的標(biāo)準(zhǔn)庫函數(shù),如strndup、asprintf等。此外,這個(gè)版本還支持pthread_CONDATTR_DISABLE和pthread_MUTEXATTR_DISABLE等新的線程屬性,并提供了新的線程庫函數(shù)。
(5)glibc v2.4
在glibc v2.4中,引入了新的malloc實(shí)現(xiàn),稱為ptmalloc2。這個(gè)實(shí)現(xiàn)可以對多線程環(huán)境進(jìn)行優(yōu)化,減少了鎖的爭用,從而提高了分配內(nèi)存的性能。此外,這個(gè)版本還提供了新的API,如posix_spawn、posix_spawnp等,方便在進(jìn)程間進(jìn)行通信。
(6)glibc v2.5
glibc v2.5引入了新的getaddrinfo實(shí)現(xiàn),這個(gè)實(shí)現(xiàn)可以提高解析域名的性能,同時(shí)支持IPv6地址。此外,該版本還引入了FORTIFY_SOURCE特性,用于檢測某些Buffer Overflow等安全問題。這個(gè)特性可以在編譯時(shí)或者運(yùn)行時(shí)進(jìn)行開啟。
(7)glibc v2.9
glibc v2.9引入了GNU hash表和動(dòng)態(tài)符號表特性,這個(gè)特性可以提高符號查找的性能,減少了符號沖突和庫的覆蓋問題。此外,在這個(gè)版本中,對malloc也進(jìn)行了一些優(yōu)化,包括更好的對齊和更少的鎖爭用。
(8)glibc v2.11
在glibc v2.11中,引入了新的定時(shí)器實(shí)現(xiàn),以及對ISO C95/C99/C11標(biāo)準(zhǔn)的完整支持。此外,這個(gè)版本還優(yōu)化了線程庫的性能,并提供了一些新的函數(shù),如getcpu、stpcpy等。
(9)glibc v2.25
glibc v2.25是目前最新的版本,引入了AT_RANDOM指針隨機(jī)化特性,用于提高程序的安全性。此外,這個(gè)版本還對庫進(jìn)行了一些性能優(yōu)化,如增加了一些針對多線程環(huán)境的優(yōu)化,并優(yōu)化了一些字符串和IO函數(shù)的實(shí)現(xiàn)。
三、glibc版本的性能比較
在各個(gè)glibc版本中,對性能的改進(jìn)也是開發(fā)者們不斷追求的目標(biāo)。下面我們將對各個(gè)版本的性能進(jìn)行簡要的對比。
(1)多線程性能
在多線程方面,glibc的性能一直是開發(fā)者們關(guān)注的重點(diǎn)。在早期的版本中,pthread庫是主要的線程實(shí)現(xiàn),但它的性能并不是很高。隨著時(shí)間的推移,glibc引入了更加優(yōu)秀的NPTL線程庫,并逐漸優(yōu)化了線程相關(guān)的函數(shù)和數(shù)據(jù)結(jié)構(gòu)。
據(jù)測試,從glibc v2.2開始,性能提升了約65%-300%的范圍。而從glibc v2.4開始,malloc的性能也有了很大的提升,可以達(dá)到比較理想的5-10倍的速度。
(2)字符串處理性能
在字符串處理方面,不同的glibc版本也能帶來一些性能上的改進(jìn)。例如,在glibc v2.8中,對字符串操作的memcpy和memset函數(shù)進(jìn)行了優(yōu)化,提高了大數(shù)據(jù)量復(fù)制和清零操作的效率。而在glibc v2.25中,則對字符串處理的多個(gè)函數(shù)進(jìn)行了優(yōu)化,如strlen、strcpy、strncpy、strcat等。
(3)IO性能
在IO方面,較早的glibc版本中,IO函數(shù)的實(shí)現(xiàn)有一些性能問題,如頻繁的系統(tǒng)調(diào)用等。而在glibc v2.4及以后的版本中,IO的性能有了很大的提升,IO幾乎不會阻塞其他線程的執(zhí)行,從而提高了整個(gè)程序的性能。
(4)程序啟動(dòng)時(shí)間
除了上述的特定性能優(yōu)化以外,在程序啟動(dòng)時(shí)間方面,glibc版本的變化也有比較明顯的影響。隨著版本的升級,程序啟動(dòng)時(shí)間有時(shí)候會變慢,但通常在后續(xù)的版本中會再次提升。
例如,在早期的glibc版本中,程序啟動(dòng)時(shí)間較慢,并且對于執(zhí)行時(shí)共享的庫,每次程序啟動(dòng)都要重新加載。而隨著glibc v2.3的到來,程序啟動(dòng)時(shí)間有了很大的改進(jìn),并引入了動(dòng)態(tài)符號表,以優(yōu)化庫的加載過程。
四、glibc版本的兼容性
對于應(yīng)用程序開發(fā)者來說,glibc版本的兼容性也是一個(gè)重要的問題。在不同的Linux發(fā)行版中,glibc的版本可能有所不同。而如果我們在某個(gè)發(fā)行版中編譯了一個(gè)基于glibc庫的程序,在其他版本的發(fā)行版上運(yùn)行時(shí)可能會出現(xiàn)問題。
為了解決這個(gè)問題,glibc引入了一種可兼容性的思路,稱為“Application Binary Interface(ABI)兼容性”。這個(gè)兼容性規(guī)范要求在不同版本的glibc中,相同的庫和程序應(yīng)該保持向后兼容,而新的庫和程序也應(yīng)該保持向前兼容。
在具體實(shí)現(xiàn)時(shí),glibc的開發(fā)者會對每個(gè)庫的函數(shù)進(jìn)行“符號版本化”。這樣,對于新舊版本之間的兼容性,就可以根據(jù)符號版本的匹配來確定使用哪個(gè)庫函數(shù)。
五、
glibc作為Linux系統(tǒng)的一個(gè)重要組件,提供了豐富的C語言標(biāo)準(zhǔn)庫支持,并且在不同版本中不斷提升其功能和性能。選擇合適的glibc版本,可以幫助我們開發(fā)出更為高效、安全、可靠的Linux應(yīng)用程序。
當(dāng)然,在實(shí)際開發(fā)過程中,除了glibc版本以外,我們還需要考慮其他因素,如不同的Linux內(nèi)核版本、不同平臺架構(gòu)等等。但glibc作為Linux系統(tǒng)中的一個(gè)重要組件,其版本的特征和兼容性問題無疑會對我們的開發(fā)過程產(chǎn)生一些直接的影響。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
發(fā)布出去的程序,運(yùn)行時(shí)總依賴glibc的版本怎么辦
要點(diǎn): glibc是gnu發(fā)布的libc庫,即c運(yùn)行庫。glibc是linux系統(tǒng)中更底層的api,幾乎其它任何運(yùn)行庫都會依賴于glibc。glibc除了封裝linux操作系統(tǒng)所提供的系統(tǒng)服務(wù)外,它本身也提供了許多其它一些必要功能服務(wù)的實(shí)現(xiàn)。由于glibc囊括了幾乎所有的UNIX通行的標(biāo)準(zhǔn),可以想見其內(nèi)容包羅萬象?! ∩塆libc的忠告:不要在運(yùn)行中的系統(tǒng)上安裝Glibc,否則將會導(dǎo)致系統(tǒng)崩潰,至少應(yīng)當(dāng)將新Glibc安裝到其他的單獨(dú)目錄,以保證不覆蓋當(dāng)前正在使用的Glibc。(我就無知的覆蓋了,囧!) 解決方法: 趕赴機(jī)房吧,幸好我在替換前在目錄/lib下保存了原來的庫文件(libc-2.5.so.bak),使用Linux系統(tǒng)盤進(jìn)入“救援模式”,將被替換的2個(gè)庫文件恢復(fù),重啟系統(tǒng)就可以了; 系統(tǒng)正常啟動(dòng)了,就交給其他部門的同事散斗去恢復(fù)數(shù)據(jù)吧?! ∩厦婢褪荓inux升級Glibc時(shí)系統(tǒng)奔潰的解決方法的介紹了,方法很簡散掘豎單,就要進(jìn)入救援模式,將替換的庫文件恢復(fù)回來就可以了,如果你在升級Glibc的時(shí)候不覆蓋原有的Glibc就不會沖大導(dǎo)致系統(tǒng)奔潰。
哪位大神簡要介紹一下Linux如何安全升級glibc?我在debian下成功編譯了新版本的glibc
你可以借鑒一下gentoo的升級思路,因?yàn)間entoo都是源代碼編譯的
首先編譯核心工具組(gcc, ld, binutils),注意使用靜態(tài)編譯(–disable-shared),安裝到褲李悉指定的位置(–with-sysroot –with-local-prefix)
然后chroot到那個(gè)位置編譯glibc并安裝
然后使用新的glibc靜態(tài)編譯核心工具組,chroot回去,覆蓋安裝回原來胡乎的地方
用此工具組再次擾蠢本地編譯glibc
linux glibc 版本的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux glibc 版本,Linux glibc版本詳解,發(fā)布出去的程序,運(yùn)行時(shí)總依賴glibc的版本怎么辦,哪位大神簡要介紹一下Linux如何安全升級glibc?我在debian下成功編譯了新版本的glibc的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡稱香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問快、穩(wěn)定!
文章標(biāo)題:Linuxglibc版本詳解(linuxglibc版本)
分享URL:http://www.5511xx.com/article/djciipd.html


咨詢
建站咨詢
