日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
編譯MySQL時Linuxthreadnotfound問題與解決

在FC6系統(tǒng)中從源碼安裝MySQL時遇到問題如下,提示Linux thread not found的錯誤,代碼如下:

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了旺蒼免費建站歡迎大家使用!

 
 
 
  1. #./configure --prefix=/usr/local/mysql
  2. checking "LinuxThreads"... "Not found"
  3. configure: error: This is a linux system and Linuxthreads was not found. On linux Linuxthreads should be used. 
  4. Please install Linuxthreads (or a new glibc) and try again. 
  5. See the Installation chapter in the Reference Manual for more information.

在網(wǎng)上隨便搜一下關(guān)鍵字“Linuxthreads was not found”可以找到很多相關(guān)的帖子,但大多都沒有提供完整解決方案。

下面來分析一下上面的出錯情況,并就此提供一個解決方案。從上面的出錯可以很明顯的看出是說系統(tǒng)缺少線程庫。沒有線程,Linux可以運行嗎?呵呵,那當(dāng)然不行。既然沒有l(wèi)inuxthread那現(xiàn)在用的是什么呢?

答案是NPTL。

作為去除過時的LinuxThreads 庫的一個步驟,在 Fedora Core 5 test1 中編譯和連接的代碼現(xiàn)在自動使用NPTL頭文件和庫。在過去的版本中,從 Red Hat Linux 9 開始,默認的線程模型是LnuxThreads,因為接口是最通用的。NPTL 接口的優(yōu)點在于,線程取消的處理更快 (使用 -fexception 參數(shù)時,即使在 C 代碼中)。現(xiàn)在附加的接口也已可用,不需要特殊的編譯器和連接器參數(shù)。

下面言歸正轉(zhuǎn),怎樣解決?

可以修改程序去支持NPTL,也可以在編譯時加上對原有thread庫的支持。我選擇了后者,這樣可以不動MySql的源代碼。在mysql手冊中搜關(guān)鍵字thread,可以查到在Chapter 2. Installing and Upgrading MySQL。

2.8.5. MIT-pthreads Notes

 
 
 
  1. If your system does not provide native thread support, you should build MySQL using the MIT-pthreads package. 
  2. This includes older FreeBSD systems, SunOS 4.x, Solaris 2.4 and earlier, and some others. See Section 2.1.1, “Operating Systems Supported by MySQL”.
  3. Beginning with MySQL 4.0.2, MIT-pthreads is no longer part of the source distribution. 
  4. If you require this package, you need to download it separately from http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz
  5. After downloading, extract this source archive into the top level of the MySQL source directory.
  6.  It creates a new subdirectory named mit-pthreads.

從上可以看出:只要下到mit-thread源碼就可以了。但不知道為什么官方網(wǎng)站上已經(jīng)沒有下了的了(我又找了一個官網(wǎng)的鏡像還是沒有,郁悶ing)。再仔細看一下上面,只是將線程源碼放到MySql源碼目錄的根目錄下以mit-pthreads命名的目錄。官方?jīng)]有自己去下一個也是一樣的,只要解壓后放到上述位置就可了。

于是去下了一個pthread源碼包,解壓放到相應(yīng)位置。

再執(zhí)行:

 
 
 
  1. #./configure  --prefix=/usr/local/mysql --with-mit-threads

就順利通過了。

附:NPTL與 LinuxThreads 相比的優(yōu)點

NPTL 沒有使用管理線程。管理線程的一些需求,例如向作為進程一部分的所有線程發(fā)送終止信號,是并不需要的;因為內(nèi)核本身就可以實現(xiàn)這些功能。內(nèi)核還會處理每個線程堆棧所使用的內(nèi)存的回收工作。它甚至還通過在清除父線程之前進行等待,從而實現(xiàn)對所有線程結(jié)束的管理,這樣可以避免僵尸進程的問題。由于 NPTL 沒有使用管理線程,因此其線程模型在 NUMA 和 SMP 系統(tǒng)上具有更好的可伸縮性和同步機制。

使用 NPTL 線程庫與新內(nèi)核實現(xiàn),就可以避免使用信號來對線程進行同步了。為了這個目的,NPTL 引入了一種名為 futex 的新機制。futex 在共享內(nèi)存區(qū)域上進行工作,因此可以在進程之間進行共享,這樣就可以提供進程間 POSIX 同步機制。我們也可以在進程之間共享一個 futex。這種行為使得進程間同步成為可能。實際上,NPTL 包含了一個 PTHREAD_PROCESS_SHARED 宏,使得開發(fā)人員可以讓用戶級進程在不同進程的線程之間共享互斥鎖。

由于 NPTL 是 POSIX 兼容的,因此它對信號的處理是按照每進程的原則進行的;getpid() 會為所有的線程返回相同的進程 ID。例如,如果發(fā)送了 SIGSTOP 信號,那么整個進程都會停止;使用 LinuxThreads,只有接收到這個信號的線程才會停止。這樣可以在基于 NPTL 的應(yīng)用程序上更好地利用調(diào)試器,例如 GDB。

由于在 NPTL 中所有線程都具有一個父進程,因此對父進程匯報的資源使用情況(例如 CPU 和內(nèi)存百分比)都是對整個進程進行統(tǒng)計的,而不是對一個線程進行統(tǒng)計的。

NPTL 線程庫所引入的一個實現(xiàn)特性是對 ABI(應(yīng)用程序二進制接口)的支持。這幫助實現(xiàn)了與 LinuxThreads 的向后兼容性。


網(wǎng)站名稱:編譯MySQL時Linuxthreadnotfound問題與解決
本文URL:http://m.5511xx.com/article/djgesoo.html