自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

編譯MySQL時Linux thread not found問題與解決

數(shù)據(jù)庫 MySQL
本文主要介紹了再FC6系統(tǒng)中從源碼安裝MySQL數(shù)據(jù)庫時提示“MySql時Linux thread not found”時的解決方案,希望能對讀者有所幫助。

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

  1. #./configure --prefix=/usr/local/mysql  
  2.  
  3. …  
  4.  
  5. …  
  6.  
  7. checking "LinuxThreads"... "Not found"  
  8.  
  9. configure: error: This is a linux system and Linuxthreads was not found. On linux Linuxthreads should be used.   
  10.  
  11. Please install Linuxthreads (or a new glibc) and try again.   
  12.  
  13. 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 開始,默認(rèn)的線程模型是LnuxThreads,因為接口是最通用的。NPTL 接口的優(yōu)點在于,線程取消的處理更快 (使用 -fexception 參數(shù)時,即使在 C 代碼中)?,F(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.  
  3. 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”.  
  4.  
  5. Beginning with MySQL 4.0.2, MIT-pthreads is no longer part of the source distribution.   
  6.  
  7. 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  
  8.  
  9. After downloading, extract this source archive into the top level of the MySQL source directory.  
  10.  
  11.  It creates a new subdirectory named mit-pthreads. 

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

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

再執(zhí)行:

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

 

就順利通過了。

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

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

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

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

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

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

【編輯推薦】

  1. php中批量刪除Mysql中相同前綴的數(shù)據(jù)表
  2. Percona Server與MySQL 5.5的性能比較
  3. 利用mysql的audit審計功能記錄用戶操作信息
  4. NaviCat通過Http方式連接服務(wù)器的MySQL數(shù)據(jù)庫
  5. 詳解Discuz_WIN7_Apache_MySQL_PHP平臺搭建
責(zé)任編輯:趙鵬 來源: ChinaUnix博客
相關(guān)推薦

2012-07-31 16:06:28

Linux內(nèi)核編譯

2010-01-15 10:31:19

Linux編譯

2010-06-04 14:40:31

2022-10-24 07:57:47

DebianUbuntuLinux

2009-07-10 17:16:39

MyEclipse不編

2010-01-05 18:03:57

2024-09-18 15:50:59

Docker容器日志

2023-12-13 18:46:51

Docker容器進(jìn)程

2017-12-04 10:56:47

MySQL問題分析解決對策

2017-03-27 18:05:49

Linux內(nèi)核編譯與開發(fā)

2011-08-30 15:09:13

2009-09-04 10:55:34

2024-10-07 11:20:16

2015-05-29 10:04:18

遠(yuǎn)程桌面訪問HASP NOT Fo運維

2010-05-28 18:05:22

jsp MySQL

2011-03-15 13:30:27

IBatis.netMySQL

2010-06-02 10:42:39

Linux mysql

2009-12-29 11:40:50

2010-03-10 10:24:16

Linux ssh后門

2010-06-01 14:51:45

MySQL驅(qū)動
點贊
收藏

51CTO技術(shù)棧公眾號