Python 调用 so

Python013

Python 调用 so,第1张

先来一个网上随便都能找得到的例子吧:先来一个test.c

在来一个test.h:

然后将其编译成.so文件

最后在python文件里面调用:

然后在终端运行:

嗯,python2的这个数字精度的bug也是醉了

当然了,ctypes不是这样简单的模块,否则也不会放到标准库里面去

(未完待续。。。)

1、背景

linux下将py编译成so,编译的so文件起到加密的作用,但注意有如下问题

问题1:so文件体积膨胀,比如原来py2so.py的794B,编译后的py2so.so有179.3KB;

问题2:打包后的so文件跟原来的py脚本一样,依赖的python环境相同。

问题3:不同系统生成的so文件,可能不兼容,如:ubuntu系统中生成的so无法在MacOS中使用的。

建议:py编译so的操作系统、python版本与最后的部署环境一致。

linux下将py编译成so,需要依赖gcc以及Cython。

1.1 查看gcc版本信息

gcc --version

root@iZu2Z:~# gcc --version

gcc (Ubuntu 7.4.0-1ubuntu1~18.04)