关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » MySQL »编译MySQL时Linux thread not found问题与解决

    编译MySQL时Linux thread not found问题与解决

    2011-07-19 12:53:00 出处:ITJS
    分享

    在FC6系统中从源码安装MySQL时遇到问题如下,提示Linux thread not found的错误,代码如下:

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

    在网上随便搜一下关键字“Linuxthreads was not found”可以找到很多相关的帖子,但大多都没有提供完整解决方案。

    下面来分析一下上面的出错情况,并就此提供一个解决方案。从上面的出错可以很明显的看出是说系统缺少线程库。没有线程,Linux可以运行吗?呵呵,那当然不行。既然没有linuxthread那现在用的是什么呢?

    答案是NPTL。

    作为去除过时的LinuxThreads 库的一个步骤,在 Fedora Core 5 test1 中编译和连接的代码现在自动使用NPTL头文件和库。在过去的版本中,从 Red Hat Linux 9 开始,默认的线程模型是LnuxThreads,因为接口是最通用的。NPTL 接口的优点在于,线程取消的处理更快 (使用 -fexception 参数时,即使在 C 代码中)。现在附加的接口也已可用,不需要特殊的编译器和连接器参数。

    下面言归正转,怎样解决?

    可以修改程序去支持NPTL,也可以在编译时加上对原有thread库的支持。我选择了后者,这样可以不动MySql的源代码。在mysql手册中搜关键字thread,可以查到在Chapter 2. Installing and Upgrading MySQL。

    2.8.5. MIT-pthreads Notes

    If your system does not provide native thread support, you should build MySQL using the MIT-pthreads package.    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”.   Beginning with MySQL 4.0.2, MIT-pthreads is no longer part of the source distribution.    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   After downloading, extract this source archive into the top level of the MySQL source directory.    It creates a new subdirectory named mit-pthreads. 

    从上可以看出:只要下到mit-thread源码就可以了。但不知道为什么官方网站上已经没有下了的了(我又找了一个官网的镜像还是没有,郁闷ing)。再仔细看一下上面,只是将线程源码放到MySql源码目录的根目录下以mit-pthreads命名的目录。官方没有自己去下一个也是一样的,只要解压后放到上述位置就可了。

    于是去下了一个pthread源码包,解压放到相应位置。

    再执行:

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

    就顺利通过了。

    附:NPTL与 LinuxThreads 相比的优点

    NPTL 没有使用管理线程。管理线程的一些需求,例如向作为进程一部分的所有线程发送终止信号,是并不需要的;因为内核本身就可以实现这些功能。内核还会处理每个线程堆栈所使用的内存的回收工作。它甚至还通过在清除父线程之前进行等待,从而实现对所有线程结束的管理,这样可以避免僵尸进程的问题。由于 NPTL 没有使用管理线程,因此其线程模型在 NUMA 和 SMP 系统上具有更好的可伸缩性和同步机制。

    使用 NPTL 线程库与新内核实现,就可以避免使用信号来对线程进行同步了。为了这个目的,NPTL 引入了一种名为 futex 的新机制。futex 在共享内存区域上进行工作,因此可以在进程之间进行共享,这样就可以提供进程间 POSIX 同步机制。我们也可以在进程之间共享一个 futex。这种行为使得进程间同步成为可能。实际上,NPTL 包含了一个 PTHREAD_PROCESS_SHARED 宏,使得开发人员可以让用户级进程在不同进程的线程之间共享互斥锁。

    由于 NPTL 是 POSIX 兼容的,因此它对信号的处理是按照每进程的原则进行的;getpid() 会为所有的线程返回相同的进程 ID。例如,如果发送了 SIGSTOP 信号,那么整个进程都会停止;使用 LinuxThreads,只有接收到这个信号的线程才会停止。这样可以在基于 NPTL 的应用程序上更好地利用调试器,例如 GDB。

    由于在 NPTL 中所有线程都具有一个父进程,因此对父进程汇报的资源使用情况(例如 CPU 和内存百分比)都是对整个进程进行统计的,而不是对一个线程进行统计的。

    NPTL 线程库所引入的一个实现特性是对 ABI(应用程序二进制接口)的支持。这帮助实现了与 LinuxThreads 的向后兼容性。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Edge浏览器百度被劫持/篡改怎么办,地址后边跟着尾巴#tn=68018901_7_oem_dg

    Google Chrome 在 iPhone 上新增了 Safari 数据导入选项

    Windows 11专业版 KMS工具激活产品密钥的方法

    DEDECMS安全策略官方出品

    Microsoft Text Input Application 可以关闭吗?

    新版本QQ如何关闭自带的浏览器?

    C++编程语言中continue的用法和功能,附举例示范代码

    c++ map 的数据结构、基本操作以及其在实际应用中的使用。

    C语言如何避免内存泄漏、缓冲区溢出、空指针解引用等常见的安全问题

    C语言中的break语句详解

    IT头条

    马斯克2026最新采访总结:2040年,全球机器人数量将突破100亿台

    23:52

    专家解读|规范人工智能前沿业态健康发展的新探索:解读《人工智能拟人化互动服务管理暂行办法》

    00:54

    用至强 6高存力搞定MoE卸载!

    17:53

    美国将允许英伟达向中国“经批准的客户”出售H200 GPU

    02:08

    苹果与微信就15%手续费达成一致?腾讯未置可否

    22:00

    技术热点

    PHP 和 Node.js 的10项对比挑战

    Javascript闭包深入解析及实现方法

    windows 7、windows 8.1手动增加右键菜单功能技巧

    MYSQL出错代码大汇总

    windows 7假死机怎么办 windows 7系统假死机的原因以及解决方法

    Ubuntu(Linux)下配置IP地址的方法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。