2015年5月7日 星期四

為 python 程式碼 產生完整二進制可執行檔

Cython 可為 python 產生一個可攜式,可跨平台的 binary code,一般都將其編譯成 library (.so)。但是會有特殊的需求,需要編譯成 binary execute file。最早大都採用 freeze.py ;可惜在 python 的日新月異下,它變得越來越不敷使用。(許多 function 都不支援了!),網路上都建議採用 cx_Freeze 來產生 binary execute file 。但是它產生出來會帶著 "一堆" 的函式庫,對於個人的專案上實在產生不小的困擾 !

既然 Cython 可以將程式碼編譯成 C-code,然後再轉換成 library,本身產生出來的 code 又很穩定,是不是能夠利用它將 python source code 編譯成 binary execute file ? 答案是可行的。當然可能要用非官方提供的編譯方式,先為 python source code  編譯時添加 '--embed' ,然後再使用 gcc 編譯成 object (.o) 檔,最後使用 gcc,指定 python 的 library 位置 '-L /usr/lib/python/lib' -L/usr/lib/python/lib/python2.7/config',然後添加參數:-lpthread -ldl -lutil -lm -Xlinker -export-dynamic











沒有留言: