ubuntu編譯python源碼的坑


在linux平台下編譯python時只需要3條命令.

編譯步驟

在github或https://www.python.org/downloads/中下載python源碼

解壓壓縮包進路目錄執行

1. ./configure --prefix=你想安裝python的全路徑 [--enable-shared在bin目錄下生成libpython版本號,so文件 編譯成動態鏈接可選]

2. make

3. make install 

編譯出現的錯:

在第2個命令make是可能出現錯誤

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -I. -I./Include -DPy_BUILD_CORE -c ./Modules/xxsubtype.c -o Modules/xxsubtype.o
gcc -pthread -c -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -I. -I./Include -DPy_BUILD_CORE -DSVNVERSION=\"`LANG=C svnversion .`\" -o Modules/getbuildinfo.o ./Modules/getbuildinfo.c
gcc: error: directory": 沒有那個文件或目錄
make: *** [Modules/getbuildinfo.o] 錯誤 1

這里說的是svn的版本好出問題了,解決方法1.

編輯Makefile 將的SVNVERSION設置為"", 即SVNVERSION=""

解決方案2.

查看自己本地的svn版本:1.svn --version 2.將SVNVERSION設置為自己對應的版本,export SVNVERSION=1.x.x SVN版本號.

 

在第2個命令make l時可能出現的錯誤

running build
running build_ext
sqlite: found /usr/include/sqlite3.h
/usr/include/sqlite3.h: version 3.8.2
Traceback (most recent call last):
File "./setup.py", line 1524, in <module>
main()
File "./setup.py", line 1519, in main
'Lib/smtpd.py']
File "/home/cht/code/sourceCode/Python-2.5/Lib/distutils/core.py", line 151, in setup
dist.run_commands()
File "/home/cht/code/sourceCode/Python-2.5/Lib/distutils/dist.py", line 974, in run_commands
self.run_command(cmd)
File "/home/cht/code/sourceCode/Python-2.5/Lib/distutils/dist.py", line 994, in run_command
cmd_obj.run()
File "/home/cht/code/sourceCode/Python-2.5/Lib/distutils/command/build.py", line 112, in run
self.run_command(cmd_name)
File "/home/cht/code/sourceCode/Python-2.5/Lib/distutils/cmd.py", line 333, in run_command
self.distribution.run_command(command)
File "/home/cht/code/sourceCode/Python-2.5/Lib/distutils/dist.py", line 994, in run_command
cmd_obj.run()
File "/home/cht/code/sourceCode/Python-2.5/Lib/distutils/command/build_ext.py", line 281, in run
self.build_extensions()
File "./setup.py", line 97, in build_extensions
self.detect_modules()
File "./setup.py", line 795, in detect_modules
sqlite_libdir = [os.path.abspath(os.path.dirname(sqlite_libfile))]
File "/home/cht/code/sourceCode/Python-2.5/Lib/posixpath.py", line 119, in dirname
return split(p)[0]
File "/home/cht/code/sourceCode/Python-2.5/Lib/posixpath.py", line 77, in split
i = p.rfind('/') + 1
AttributeError: 'NoneType' object has no attribute 'rfind'
make: *** [sharedmods] 錯誤 1

這是python源碼用了 /usr/include/sqlite3.h,p原本應該是個str對象導致p最后為None,臨時解決方法

將 /usr/include/sqlite3.h先重命名 >> sudo mv  /usr/include/sqlite3.h  /usr/include/sqlite3.h_ 在命執行make和make install 就不會出現這個錯誤了.

執行完后將sqllite3.h改回 >> sudo mv  /usr/include/sqlite3.h_  /usr/include/sqlite3.h

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM