2012-03-19 81 views
1

蟒蛇3.3的版本,我只是從源代碼編譯:我如何獲得python與libz編譯?

$ ldd ./python 
    linux-gate.so.1 => (0xb776c000) 
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb773b000) 
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7736000) 
    libutil.so.1 => /lib/i386-linux-gnu/libutil.so.1 (0xb7731000) 
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7707000) 
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7589000) 
    /lib/ld-linux.so.2 (0xb776d000) 

與我的系統版本python3的(3.2):

$ ldd `which python3` 
    linux-gate.so.1 => (0xb7777000) 
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb7746000) 
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7741000) 
    libutil.so.1 => /lib/i386-linux-gnu/libutil.so.1 (0xb773c000) 
    libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0xb76ef000) 
    libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xb754b000) 
    libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7536000) 
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb750c000) 
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb738d000) 
    /lib/ld-linux.so.2 (0xb7778000) 

libz進行和其他一些庫丟失,出於某種原因。我嘗試瞭解決方案here,但它沒有奏效。我難住 - 有什麼想法?

+0

爲什麼你認爲二進制文件需要鏈接到zlib? – 2012-03-19 03:36:24

+0

我遇到了一個我正在編寫的cython模塊的問題,因爲缺少libz。 – colinmarc 2012-03-19 04:22:44

回答

0

嘗試使用--with-libs。見下文。

Python-3.3.0a1/configure --help | grep lib 
.... 
--with-libs='lib1 ...' link against additional libs 
.... 

使用--with-libs ='libz'配置後,我在config.log中看到「--with-system-zlib」。這應該是你在找什麼。

+1

hm。該選項適用於./configure,但現在我無法制作。我得到#error「這個平臺的pyconfig.h需要在config.log中定義PY_FORMAT_LONG_LONG」 – colinmarc 2012-03-19 04:19:54

+0

我看到像'gcc:error:libz:No such file or directory'這樣的錯誤' – colinmarc 2012-03-19 04:26:03

1

看起來答案是在Modules/Setup(和Modules/Setup.dist)中。取消註釋行的伎倆:

# Andrew Kuchling's zlib module. 
# This require zlib 1.1.3 (or later). 
# See http://www.gzip.org/zlib/ 
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz 
0

只要確保你之前安裝所需的庫運行配置使,如:

yum install sqlite-devel 
yum install zlib-devel 
yum install openssl-devel 

./configure --enable-shared 
make install 

如果您忘記第一時間,沒關係,再試一次。如果您打算構建其他依賴於Python的程序(例如,Django要求的mod_wsgi),那麼使用--enable-shared是個好主意。

如果在運行Python時看到「python3:加載共享庫時出錯:libpython3.5m.so.1.0:無法打開共享目標文件:沒有這樣的文件或目錄」,其中一個解決方案就是簡單地執行:

cp /usr/local/lib/libpython3.5m.so.1.0 /usr/lib64/ 

否則將其添加到LD_LIBRARY_PATH。

相關問題