使用google-perftools编译Python 2.7.2

时间:2011-12-05 18:33:53

标签: python compilation google-perftools

我有一个debian挤压操作系统(64位)。我想在google-perftools中使用python。为了执行该操作,我使用选项“-lctmalloc”编译了自己的python 2.72。但我得到的错误很少。

  1. 我安装了libuwind,因为google-perftool在使用64位
  2. 时会询问此程序包
  3. 我安装了所有需要的软件包:
  4. 步骤:

    > sudo apt-get -y install build-essential 
    > sudo apt-get -y install zlib1g-dev libxml2-dev libxslt1-dev libssl-dev libncurses5-dev  
    > sudo apt-get -y install libreadline6-dev autotools-dev autoconf automake libtool 
    > sudo apt-get -y install libsvn-dev mercurial subversion git-core 
    > sudo apt-get -y install libbz2-dev libgdbm-dev sqlite3 libsqlite3-dev 
    > sudo apt-get -y install curl libcurl4-gnutls-dev 
    > sudo apt-get -y install libevent-dev libev-dev librrd4 rrdtool 
    > sudo apt-get -y install uuid-dev libdb4.8-dev memcached libmemcached-dev  
    > sudo apt-get -y install libmysqlclient-dev libexpat1-dev 
    > sudo apt-get -y install google-perftool 
    > cd python 
    > export CFLAGS='-ltcmalloc' 
    > ./configure 
    > make
    

    这就是我得到的:

    gcc  -Xlinker -export-dynamic -o python \
                Modules/python.o \
                libpython2.7.a -ldl  -lutil   -lm  
    libpython2.7.a(posixmodule.o): In function `posix_tmpnam':
    /home/toto/python272/Python-2.7.2/./Modules/posixmodule.c:7370: warning: the use of `tmpnam_r' is dangerous, better use `mkstemp'
    libpython2.7.a(posixmodule.o): In function `posix_tempnam':
    /home/toto/python272/Python-2.7.2/./Modules/posixmodule.c:7317: warning: the use of `tempnam' is dangerous, better use `mkstemp'
    libpython2.7.a(thread.o): In function `_pythread_pthread_set_stacksize':
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:491: undefined reference to `pthread_attr_setstacksize'
    libpython2.7.a(thread.o): In function `PyThread_release_lock':
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:346: undefined reference to `sem_post'
    libpython2.7.a(thread.o): In function `PyThread_acquire_lock':
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:323: undefined reference to `sem_trywait'
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:321: undefined reference to `sem_wait'
    libpython2.7.a(thread.o): In function `PyThread_free_lock':
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:292: undefined reference to `sem_destroy'
    libpython2.7.a(thread.o): In function `PyThread_allocate_lock':
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:268: undefined reference to `sem_init'
    libpython2.7.a(thread.o): In function `PyThread_start_new_thread':
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:183: undefined reference to `pthread_attr_setstacksize'
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:193: undefined reference to `pthread_create'
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:209: undefined reference to `pthread_detach'
    libpython2.7.a(thread.o): In function `PyThread_acquire_lock':
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:321: undefined reference to `sem_wait'
    libpython2.7.a(thread.o): In function `PyThread_release_lock':
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:346: undefined reference to `sem_post'
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:346: undefined reference to `sem_post'
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:346: undefined reference to `sem_post'
    libpython2.7.a(thread.o): In function `PyThread_allocate_lock':
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:268: undefined reference to `sem_init'
    /home/toto/python272/Python-2.7.2/Python/thread_pthread.h:268: undefined reference to `sem_init'
    collect2: ld returned 1 exit status
    make: *** [python] Error 1
    You have new mail in /var/mail/root
    

    如果没有CFLAGS =' - ltcmalloc',我真的不明白这个错误,我能够编译。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

使用LDFlags

  

-ltcmalloc

它需要posix线程支持。

  

-lpthread