由於我們是C++作驅動的Python開發,驅動需要加上Python靜態庫libpython2.7.so、libpython2.7.so.1.0、libpython2.7.a。
此處我想在python源碼上加上自己加的log,因此要重新編譯Python生成共享庫(動態庫、靜態庫),再生成驅動。
一般快速編譯安裝Python源碼步驟:
./configure
make
make install
如果要生成共享庫libpython2.7.so、libpython2.7.so.1.0、libpython2.7.a(.so為動態庫,.a為靜態庫),則為:
./configure --prefix=/usr/local/python2.7 --enable-shared make make install altinstall
--prefix 指定你要安裝的目錄,--enable-shared 表示編譯成共享庫;
install 安裝會使用新安裝的版本,
altinstall 則會使用舊版本(假如有)。
如果要在環境中使用,還要設置路徑(注意這里會替換原來環境中的python,之前安裝過的庫會使用不了,最好先做備份!!!):
ln -s /usr/local/python2.7/lib/libpython2.7.so /usr/lib ln -s /usr/local/python2.7/lib/libpython2.7.so.1.0 /usr/lib ln -s /usr/local/python2.7/bin/python2.7 /usr/local/bin /sbin/ldconfig -v
重新編譯安裝python還是遇到一些坑。
因項目需求需要把python2.7.3升級為pyhton2.7.14,重新指定目錄編譯安裝python2.7.14后,把對應的動態庫文件(so文件)替換后,發現pyhton仍然使用舊版本。
后面查看pyhton依賴庫:
which python
ldd /usr/local/python
發現,python2.7.3版本 並沒有依賴動態庫,所以這里替換掉動態庫還是不行。
解決方法(替換掉python執行文件):
ln -s /usr/local/python2.7/bin/python2.7 /usr/local/bin
參考:
http://stackoverflow.com/questions/26597527/how-to-install-libpython2-7-so