2011-11-27 13 views
7

Tôi có một kịch bản Python cho python 2.7, nói điều này:Liên kết tĩnh Cython với thời gian chạy python?

print("Hello World!") 

Tiếp theo, tôi tắt chức năng này vào C sử dụng:

python cython.py --embed helloworld.py 

Và sau đó tôi cố gắng biên dịch nó tĩnh:

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

Nhưng gcc chỉ tạo một tệp nhị phân sử dụng thời gian chạy python27.dll. Làm thế nào tôi có thể tạo một nhị phân liên kết tĩnh với thời gian chạy?

+0

bạn không thể, bạn sẽ cần một libpython27.a tĩnh được biên dịch với gcc, hiện không thể xây dựng (hoặc ít nhất là chính thức), trong việc kích hoạt phân phối bạn có python27.lib trong thư mục \ libs nhưng nó liên kết động, tôi ' đã chỉ xem http://code.google.com/p/pts-mini-gpl/wiki/StaticPython này, nhưng cửa sổ không được hỗ trợ (rõ ràng) – sherpya

+0

Ngay cả khi sử dụng Visual Studio, điều này có thể gây phiền hà, vài ngày trước đây tôi đã hỏi một câu hỏi tương tự: http://stackoverflow.com/questions/8194489/cpython-sources-how-to-build-a-static-python26-lib –

Trả lời

2

Nếu bạn đang làm việc từ Linux hoặc OS X, bạn có thể sử dụng công cụ xây dựng my engine's, Schafer có chế độ "trần" sẽ chỉ xây dựng Python tĩnh (cho tất cả nền tảng được hỗ trợ, bao gồm Windows). mô-đun, và nó cũng sẽ "cythonize" và nhúng các nguồn của bạn vào nó. Nếu điều này không phù hợp với hóa đơn của bạn, bạn vẫn có thể lấy ý tưởng từ số source về những gì cần để thực hiện những gì bạn muốn thực hiện.