手动、自动实现python编译so动态库

本文介绍如何使用Cython将Python源码编译为C语言代码,再进一步编译为.so文件,以此来保护Python源码不被轻易反编译。文章详细讲解了从创建Python文件、编译步骤、环境配置到最终验证的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目的:

  python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将产品发布到外部环境的时候,源码的保护尤为重要。

二、编译步骤:

  1.将.py文件转换成.c文件

  2.将.c文件转换成.so文件

三、环境要求:

cython python模块、python-dev库、gcc、编译工具。

四、创建 hello.py

#-* -coding: UTF-8 -* -
__author__ = 'JiangJihai'

class test:
    def say(self):
        print 'hello'

五、创建build.py

from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize(["hello.py"]))

六、手动编译

1.通过python IDE 运行 build.py

生成hello.c

2.通过gcc 编译成 so文件

gcc -c -fPIC -I C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\include test.c

gcc -shared test.o -o test.so

七、自动生成

python3 ./build.py build_ext --inplace

八、验证:

>>> import hello
>>> h = hello.test()
>>> h.say()
hello
>>> 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值