Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51738
  • 博文数量: 16
  • 博客积分: 657
  • 博客等级: 上士
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-29 09:11
文章分类

全部博文(16)

文章存档

2009年(4)

2008年(12)

我的朋友

分类:

2009-03-14 22:28:42

最近折腾boost.python,以方便将原有的C/C++代码和python结合。首先自然是建立环境,Debian linux下没啥好说的,apt-get一把后,很顺利跑起来了,然后由于应用需要,需要支持瘟逗死平台,于是苦难的历程开始了。
   出于兼容和要求linux下能交叉编译瘟逗死程序,选用了mingw来编译boost,但是mingw官方版本比较低,且不支持dw2模式(Debian下的mingw已经是dw2模式的了),于是只能使用非官方的了,选定了 提供的gcc-4.3.3-dw2-tdm-1版本,遗憾的是该网站的版本包含的boost没有包括boost.python,看来还得自己编译boost。
   完全使用该网站提供的环境和源码,在msys环境下开编boost_1_38_0的boost.python,然后就发现无论怎么折腾就是检测不到python,阅读boost.python官方文档,在user-config.jam,中强行指定版本,路径等,还是有问题。其间包括装了python2.4.4,python2.5.4,python2.6.1。统统不行,怀疑msys环境有问题,老老实实使用痿软那该死的cmd控制台,依然不行,还试过从boost.org下载1.37等版本一概不行,再干脆全删了,装上mingw官方的gcc-3.4.5,依然没啥用。如此折腾两天,绝望之下,想起来bjam用的是nuwen网站的版本编译的,貌似打了个啥补丁,于是到boost.org下载了原始的编译好的二进制版本,这下好了,python顺利的检测到了。
   首先用mingw gcc-3.4.5编译,由于用了默认的完全编译,耗时N久后,boost_python成功了,但是不知是winxp问题还是vmware问题,最终没有完成boost所有编译,出现了Can not create this process之类的错误,此时,虚拟机里的winxp一副资源耗尽的样子,新程序都打开失败,暂且认为是系统问题吧。
  换回nuwen版的gcc-4.3.3,同上情况差不多,boost.python库顺利获取,但是按照文档编译boost自带的例子,结果是假装成功,死活找不到生成的例子pyd文件哪里去了,最后没法子,在example目录下运行bjam toolset=gcc -a -obd.list ,查看bd.list文件,找到接近末尾的生成例子pyd的行,复制出来手工运行,获得了可供python加载的pyd文件,然后测试通过,现在总算在瘟逗死下能玩了。
   然而这是不够的,目标是在linux能够完全交叉编译,主要因为软件主要是在linux用,且为了开发瘟逗死版切换到对我来说死难用的winxp是件极其痛苦的事情,就上边为了获得boost.python库在winxp的控制台都要把人折磨疯了。将boost以及python库复制到 linux,设好后,编译比较顺利,但最后链接时,出现了N 多的链接错误,看起来库有问题?又是一通折腾尝试,无数次瞎碰后得出成功的条件,必须使用libpython26(25).a和boost_python的非静态库即dll版本,这个组合能顺利通过,使用boost_python的静态库,python的动态库不行。真是让人恼火,不明白为哈,复制到  瘟逗死里,测试通过。注意编译完得到的dll注意要改为pyd后缀名,不然在瘟逗死里python无法加载。
  真是个痛苦的经历,姑且记下来,或许有勇于在瘟逗死下开发boost.python应用的同仁看到后少走些弯路。
 另:由于官方的python2.6.1使用vs2008编译,需要几个痿软的诸如msvcr90.dll之类变态库,不知是版权还是痿软的安全控制问题,导致py2exe(0.6.9版)打包软件不能正常使用,还是暂时不要玩python2.6了,python2.5是没问题的。
阅读(1445) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~