`
willko
  • 浏览: 386685 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

整合编译mysql和tcmalloc失败的原因

阅读更多
google-perftools里的tcmalloc比glibc的malloc的分配效率和性能要搞多了,所以经常用来优化。
据说,对mysql大并发下有效的提高性能。。

环境 centos 5.3 mysql 5.1.30

我编译mysql 的参数是

引用
./configure --prefix=/usr/local/mysql --without-debug --with-unix-socket-path=/usr/local/mysql/mysql.sock --with-mysqld-ldflags="-all-static -ltcmalloc" --with-client-ldflags=-all-static --with-extra-charsets=utf8 --with-pthread --enable-thread-safe-client --enable-profiling --enable-assembler CFLAGS="-O3"CXX=g++ CXXFLAGS="-O3"


make的时候结果出错。
引用
mysqld.o: In function `set_ports()':
mysqld.cc.text+0x84b): warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/local/lib/libtcmalloc.a(stacktrace.o): In function `GetStackTrace(void**, int, int)':
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:65: undefined reference to `_ULx86_64_init_local'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:78: undefined reference to `_ULx86_64_step'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:70: undefined reference to `_ULx86_64_get_reg'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:78: undefined reference to `_ULx86_64_step'
/usr/local/lib/libtcmalloc.a(stacktrace.o): In function `GetStackFrames(void**, int*, int, int)':
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:126: undefined reference to `_ULx86_64_init_local'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:130: undefined reference to `_ULx86_64_step'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:130: undefined reference to `_ULx86_64_get_reg'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:139: undefined reference to `_ULx86_64_step'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:139: undefined reference to `_ULx86_64_get_reg'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:137: undefined reference to `_ULx86_64_get_reg'
collect2: ld returned 1 exit status
make[3]: *** [mysqld] Error 1
make[3]: Leaving directory `/home/willko/tools/mysql-5.1.30/sql'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/willko/tools/mysql-5.1.30/sql'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/willko/tools/mysql-5.1.30/sql'
make: *** [all-recursive] Error 1


把--with-mysqld-ldflags="-all-static -ltcmalloc" 改成 --with-mysqld-ldflags="-all-static -ltcmalloc -lunwind"
make 一样出错,只是少了错误。。
原来,mysql的静态模式下是不支持外挂的。
所以必须去掉静态,也就是--with-mysqld-ldflags="-ltcmalloc -lunwind"就可以了。
不过,最后我没选择整合编译的方法。。。

分享到:
评论
1 楼 selboo 2011-06-27  
最后怎么整合的?

启动加载 动态库??? 还是其他的?

相关推荐

    tcmalloc源代码及编译安装教程

    安装tcmalloc所需的源代码,和完整编译安装应用过程。 unzip tcmalloc.zip tar -zxvf gperftools-2.1.tar.gz cd gperftools-2.1 ./configure --disable-cpu-profiler --disable-heap-profiler --disable-heap-...

    linux系统 64位下编译安装tcmalloc

    在Linux 64位系统上编译安装Google的tcmalloc是一个涉及到系统级编程和内存管理的高级操作。tcmalloc是Google开发的一种高效的内存分配器,它优化了C++标准库中的malloc和free函数,提供了更快速的内存分配和释放,...

    tcmalloc编译好的lib文件和dll文件

    tcmalloc作为高效的内存分配器,其编译好的lib和dll文件在本压缩包中提供了方便的使用选项。根据项目需求,你可以选择动态或静态链接tcmalloc,以提升程序的内存管理和并发性能。正确集成并使用tcmalloc,有助于优化...

    MySQL 使用Google的TCMalloc库,提高MySQL的性能.docx

    整合TCMalloc到MySQL可以带来诸多性能优势,例如更快的内存分配速度、更少的系统资源消耗以及更好的并发处理能力。然而,需要注意的是,虽然TCMalloc通常能提高性能,但在某些特定工作负载下可能并不适用,因此在...

    Tcmalloc-v2.10

    在项目中集成tcmalloc需要进行适当的编译选项设置,如在CMake或Makefile中指定链接gperftools库。同时,可以通过环境变量或者代码配置tcmalloc的行为,如开启调试模式,调整线程缓存大小等。 总结来说,Tcmalloc-v...

    linux centos 编译安装Mysql.zip

    在Linux CentOS系统上编译安装MySQL是一个相对复杂的过程,但能提供高度的定制性和优化空间。MySQL是一款流行的开源关系型数据库管理系统,广泛应用于各种规模的企业和项目中。本指南将详细阐述如何在CentOS上从源...

    vs2003-tcmalloc静态链接库

    4. **替换默认内存分配器**:为了使用Tcmalloc,你需要在程序启动时调用`google::InitGoogleLogging()`和`tcmalloc::TcmallocPageHeap::Init()`函数来初始化Tcmalloc。 5. **测试与优化**:编译并运行项目,检查...

    tcmalloc排查内存泄漏的方法

    tcmalloc是一种高性能的内存管理库,它可以帮助开发者检测和解决内存泄漏问题。在本文中,我们将介绍如何使用tcmalloc来排查内存泄漏的方法。 安装gperftools 首先,我们需要安装gperftools这个工具包,可以使用...

    控制内存增长TCMALLOC.docx

    ### 控制内存增长TCMALLOC ...通过合理地配置和使用TCMalloc,可以显著提高应用程序的性能,尤其是在多线程环境下。随着软件系统的日益复杂化,TCMalloc将在未来的软件开发中发挥更加重要的作用。

    Tcmalloc.zip

    Tcmalloc是Google PerfTools的一部分,这个工具集还包括了CPU和内存性能分析工具,如Profiler和Heap Profiler。 **Gperftools简介** Gperftools是Google开源的一个性能分析工具集合,其主要目标是帮助开发者找到...

    基于numa架构的tcmalloc内存管理算法

    在讨论基于NUMA架构的TCMalloc内存管理算法之前,我们先来深入了解NUMA架构和TCMalloc算法的概念及其在内存管理中的作用。 NUMA(Non-Uniform Memory Access)架构是一种多处理器架构,其中每个处理器(CPU)有其...

    MySQL5.5-deps

    2. **开发工具和库**:如gcc编译器,用于编译MySQL源码;make工具,帮助构建和安装软件;openssl库,用于加密和安全通信。 3. **系统工具**:如Perl,用于处理系统脚本和配置;readline库,提供命令行编辑功能;...

    tcmalloc 安装包

    These tools are for use by developers so that they can create more robust applications. Especially of use to those developing multi-... Includes TCMalloc, heap-checker, heap-profiler and cpu-profiler.

    tcmalloc 源代码工程

    These tools are for use by developers so that they can create more robust applications. Especially of use to those developing multi-... Includes TCMalloc, heap-checker, heap-profiler and cpu-profiler.

    LOK封装的TCMALLOC(TztMM).zip

    这个tcmalloc很出名了,是google出的内存管理模块,比传统模块控制更合理,能应付更高的并发,而且也更稳定. 不过这个模块不是系统自带的,没有原生安装,所以需要手动去安装操作,稍微有点麻烦.这个模块包含在google封装...

    tcmalloc

    TCMalloc是Google对C的malloc()和C ++的operator new的自定义实现,用于在C和C ++代码中进行内存分配。 TCMalloc是一种快速的多线程malloc实现。构建TCMalloc 是TCMalloc的官方构建系统。 《 包含有关TCMalloc的...

    TCMalloc代码框架

    Central Cache具有和thread cache相同映射规则的哈希桶结构,不仅可以向thread cache提供内存,还可以从thread cache回收内存,达到内存在多个线程中均衡调度的作用。Page Cache是以页为单位管理内存的哈希桶结构,...

    MySQL主从复制配置文档

    - 配置编译选项,`./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-tcmalloc` - 编译和安装,`make && make install` - 初始化数据库,`scripts/mysql_install_db --user=mysql` - 设置权限...

    基于C++的TCMalloc内存优化模块设计源码

    本项目为基于C++语言的TCMalloc内存优化模块的设计...TCMalloc(google-perftools)旨在优化多线程C++应用的内存分配,相比glibc 2.3的malloc具有更高的性能,特别适用于MySQL等数据库在高并发环境下的内存稳定性需求。

Global site tag (gtag.js) - Google Analytics