2011-11-27 60 views
7

我有Python 2.7版的Python腳本,這樣說:用Python運行時Cython靜態鏈接?

print("Hello World!") 

接下來,我用這變成C:

python cython.py --embed helloworld.py 

然後我嘗試靜態編譯:

gcc -IC:\Python27\include -LC:\Python27\libs helloworld.c -Wl,-Bstatic -lpython27 
    -Wl,-Bdynamic 

但gcc只是創建一個使用python27.dll運行時的二進制文件。我如何創建靜態鏈接到運行時的二進制文件?

+0

你不能,你需要一個靜態libpython27.a編譯與gcc,目前不可建立(或至少正式),在activestate分配你有python27.lib在\ libs subdir但它鏈接動態,我'我只是看了這個http://code.google.com/p/pts-mini-gpl/wiki/StaticPython,但不支持windows(顯然) – sherpya

+0

即使使用Visual Studio,這可能會很麻煩,幾天以前我一直在問一個類似的問題:http://stackoverflow.com/questions/8194489/cpython-sources-how-to-build-a-static-python26-lib –

回答

2

如果您使用的是Linux或OS X,則可以使用my engine's構建器工具Schafer,它具有「裸」模式,它將靜態構建Python(對於所有支持的平臺,包括Windows)以及多個標準模塊,它也將「cythonize」並嵌入你的來源。如果這不符合您的賬單,您仍然可以從source獲得想要完成的任務。