如何用mingw编译python扩展

最近在用Python做一些东西,由于需要发布,所以要使用py2exe打包,不过发现python2.6打包后的文件不给力,在没有安装python或者vs2008的机器上无法运行,估计是dll不对。所以改用python2.5来做程序,发现挺好用的。

 

在用pypcap的时候发现上面发布的编译好的程序比较旧,有一些故障没有解决(比如阻塞还有就是readpkts包列表是同一个地址等问题),在trunk版本上已经解决了。所以需要编译一下。

 

由于使用了pyx格式的,按照install文件的提示,下载Pyrex ,winpcap(版本不用太新,防止目录结构变化)以及mingw,然后修改makefile文件,指明winpcap开发库的地址和正确的配置好pyrex调用,按照说明文件make,应该就可以了,不过提示了无法找到一些符号。

 

根据分析,原来是少了很重要的一个步骤,就是mingw的gcc需要连接.a文件,不能直接连接vs2003编译出来的文件。

 

关键部分出场了,找一个python的dll文件(activeState的好像没有,python官方安装有,所以随便找一个python25.dll就可以了),用pexports导出

pexports python25.dll > python25.def

然后用dlltool(mingw)自带的工具转换到.a文件

dlltool --dllname python25.dll --def python25.def --output-lib libpython25.a

把生成的libpython25.a放到python的libs下

 

再执行mingw32-make,果然顺利生成了pcap.pyd文件,其实就是dll文件啦。

执行python setup.py bdist_wininst,就可以看到打包后的文件了,也就是生成了一个描述文件再加上刚才的pyd文件,但是被封装成exe文件了,用户可以直接点击安装。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值