2011-12-05 4 views
1

데비안 스퀴즈 운영체제 (64 비트)가 있습니다. python을 google-perftools와 함께 사용하고 싶습니다. 이를 수행하기 위해 파이썬 2.72를 "-lctmalloc"옵션과 함께 컴파일했습니다. 그러나 오류는 거의 발생하지 않습니다.google-perftools로 Python 2.7.2 컴파일

> 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 

그 무엇이다 : 단계

: 내가 필요한 모든 패키지를 설치

  • 64 비트를 사용하는 동안 구글 - perftool이 패키지를 요구하기 때문에

    1. 나는 libuwind 설치 나는 :

      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'없이 정확히 같은 것을 할 때 나는이 오류를 정말로 이해하지 못한다. 컴파일 할 수있다. 도움 주셔서 감사합니다.

  • +0

    난 당신이 수출 LDFLAGS =를 사용한다 같아요. – pyfunc

    +1

    또한 포함되어야 하는가 : -lpthread – pyfunc

    +1

    가 대단히 감사합니다 : 을 나는 LDFLAGS = 추가 smply '- ltcmalloc -lpthread' CFLAGS = '- ltcmalloc -lpthread' –

    답변

    1

    사용 LDFLAGS

    -ltcmalloc

    하고 POSIX 쓰레드 지원이 필요합니다. '- ltcmalloc을'그냥 CFLAGS하지

    -lpthread

    관련 문제