作者alongalone (要求太仔細會是太過份嗎)
看板Python
標題[問題] C呼叫 python 的 function 在包裝成一個單一執行檔
時間Tue Aug 9 22:59:14 2011
爬文爬了很久,絕大多數都是要在另一台上面安裝 python
有辦法編出單一執行檔嗎?
我是用 mingw32 和 python2.5 去編譯的
編出來的exe放到沒裝python的電腦就是會跳出 "遺失 python25.dll"
我本來想說 libpytho25.a 直接static link 應該就可以編出純執行檔.
不過今天試了整天的結論好像不行.
另一個問題是linux上的
我下 gcc my.c -lpython2.5, 編出來的 a.out 丟到沒裝python的linux主機,
結果執行時缺少share library. 可是當我下 gcc my.c -static -lpython2.5時
全都是undef reference. 如果是這樣的話,那 libpython2.5.a 的用途是做什麼的?
用來產生 libpython2.5.so ?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.44.40
1F:→ uranusjr:因為 libpython2.5.a 也是動態連結的, 你只包那個 lib 沒 08/09 23:11
2F:→ uranusjr:用, 它裡面參照的 symbols 也要改才行 08/09 23:11
3F:→ uranusjr:你需要 compile 一份靜態連結的 Python; 我沒研究過, 不 08/09 23:12
5F:→ alongalone:謝謝樓上大大的指教,我還有知道一個叫static python 08/09 23:27
6F:→ alongalone:不過那個只能在linux上跑(binary code);看來得硬幹了 08/09 23:28
8F:→ COLDTURNIP:我曾在公司用這玩意做工具給產線用 08/09 23:35
9F:→ COLDTURNIP:啊…我看反了,上面這只能 py call c,真是抱歉 orz 08/09 23:37
10F:→ COLDTURNIP:要 call py 的話…試試 Boost.Python? 08/09 23:39
11F:→ alongalone:boost是c++的..T__T 我相當不熟...orz 08/09 23:51
12F:推 Falldog:PyInstaller? 08/10 13:04
13F:→ alongalone:hi F大, installer應該是把py編成exe,跟我的需求有落差 08/10 13:16
14F:→ juiz:最簡單的解法就是自己編一個 Python runtime 來用 08/10 21:02
15F:→ yjc1:一定不能把 python25.dll 也放在同個目錄下嗎? 08/10 21:57