要用python写一个东西,用到一个工具是c++写的。这个工具拿到手的时候只有.a的静态库文件,没有动态链接库文件。而python似乎调用.so的文件更容易一些。所以想到把.a重新编译成.so。
在网上查了一下,发现其实很简单,第一步,使用ar命令,把编译进.a文件的.o提取出来(将.o编译成.a用的也是ar命令);第二步,把.o编译成动态链接库.so(这个就比较简单啦)
$ ar -x libxxx.a
$gcc -shared -o libxxx.so *.o
(以上请保证当前目录下没有其他.o文件)
实际操作的时候,在做第二步的时候发生过一次 file not recongnized: 不可识别的文件格式 的问题,用file命令看了一下这个.o文件, ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped,哦,是64位的。我本机的cygwin只装了32位的支持哇,果断换去64位的服务器上干活,一切ok~