我正在使用Debian(隨Python-2.7.3一起提供),嘗試從源代碼編譯Python-2.7.6以與Apache一起使用mod_wsgi。奇怪的Python編譯結果帶有「--enable-shared」標誌
根據許多答案,顯然你必須在編譯mod_wsgi時使用--enable-shared。
按照下列步驟操作:
./configure --enable-shared --prefix=/usr/local/bin/python-2.7.6
make
make install
,然後檢查交互shell @
/usr/local/bin/python-2.7.6/bin/python
我與打招呼「Python 2.7.3(default,2013年1月2日,14:09:21)」等
爲什麼會導致Python 2.7.3?
我試圖LDD對可執行文件,這是結果:
linux-vdso.so.1 => (0x00007fff271ff000)
libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00007f1545638000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f154541c000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1545217000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f1545014000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1544d92000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1544a06000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f15447ef000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f15445d9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1545b40000)
如何使用系統庫停止,轉而使用本地編譯版本?
我知道,僅僅恢復使用安裝了Python的系統版本並且現實世界的差異爲零就容易多了。但是這種行爲似乎很奇怪。
我最終需要做的是:使用--enable-shared編譯python,使安裝進入目錄,使distclean它,設置LD_RUN_PATH到新編譯的lib文件夾,再次使用--enable-shared,刪除以前編譯的版本,進行安裝。並且再一次針對新的python重新編譯mod_wsgi。非常感謝指向正確方向的指針。 –
隨機附註:您實際上可以使用名爲patchelf的精美簡單程序添加RPATH後編譯。這是我最近的新聞,因爲我忘了設置RPATH/RUN_PATH而讓我重新編譯了一些東西。強烈推薦:https://nixos.org/patchelf.html – CptSupermrkt
有關patchelf的相關信息。早在90年代初,我曾經在Solaris上使用類似的程序。不知道Linux存在這樣的事情。 –