如何用mingw編譯python擴充

來源:互聯網
上載者:User

最近在用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檔案了,使用者可以直接點擊安裝。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.