编译 python 生成静态库 libpython2.7.so
由于我们是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