我想要編譯PyPy在Cygwin上,當蟒蛇試圖打開文件「externmod」,它只是用gcc編譯,編譯將會停止編譯PyPy。在cygwin上,gcc的問題在於它會自動將'.exe'附加到你正在編譯的任何東西上,所以儘管gcc被稱爲gcc -shared -Wl,--enable-auto-image-base -pthread -o /tmp/usession-release-1.8/shared_cache/externmod
,但輸出文件最終不管怎樣都是externmod.exe
。所以Python試圖打開/tmp/usession-release-1.8/shared_cache/externmod
並找不到它 - 因此編譯停止。任何人都知道如何解決這個問題,缺乏重新編譯gcc?我不想這樣做。在Cygwin上
Q
在Cygwin上
2
A
回答
3
要回答你的問題,解決你的問題最簡單的方法是在pypy/translator/platform中修改init .py,使它指向一個實際的平臺,而不是它現在正在使用的'None' 。在linux.py中,你會注意到`so_ext ='so''這行可能是修復擴展問題的原因。請注意,雖然假裝cygwin的一點小技巧是linux會在這個確切的實例中工作,但是稍後會有一些道路顛簸會讓你(我不記得有足夠的細節可以避免) 。
編輯:我init.py有關節目前看起來像
if sys.platform == 'cygwin':
from pypy.translator.platform.linux import Linux, Linux64
import platform
if platform.architecture()[0] == '32bit':
host_factory = Linux
else:
host_factory = Linux64
elif sys.platform.startswith('linux'):
1
Windows需要「.exe」擴展名才能知道它是可執行文件。您需要修改構建以查找Windows並使用.exe擴展名。
3
我設法編譯它,不得不作出了不少改變之後。
- PyPy沒有爲Cygwin提供配置。如上所示,我複製了Linux 配置並根據需要對其進行了修改。特別是我刪除了 -pthread標誌,並且--export-dynamic C鏈接器標誌應該是--export-all-symbols。這也是指定文件擴展名(.exe,.dll)的位置。
- Cygwin的不實現在tm結構的tm_gmtoff和tm_zone領域,這是一個GNU擴展POSIX標準。 PyPy使用這些字段來確定時區。我實施瞭解決方法。使用這些tm字段可以使幾個文件都處於更新狀態。
- 在Cygwin下,系統調用waitpid()需要PyPy使用的插槽2的不同參數類型。我實現了一個重新映射參數的包裝器。
- 在Cygwin下,curses C頭文件在ncurses下。
相關問題
- 1. 在Cygwin上
- 2. 在Cygwin上
- 3. 問題在Cygwin上
- 4. Cygwin上的tdbloader:java.lang.NoClassDefFoundError
- 5. Cygwin上的Redmine
- 6. Cygwin上的OpenSSH
- 7. Cygwin上的Pyscripter
- 8. 在cygwin上安裝uwsgi
- 9. 無法在Git/Cygwin上chdir()
- 10. 在Cygwin上安裝PIL
- 11. 在Cygwin上設置emacs
- 12. 在Cygwin上編譯node.js
- 13. Kngter在CygWin上安裝
- 14. 在Cygwin上安裝Ant
- 15. 在Cygwin上使用Mallet
- 16. tchar.h在cygwin上找不到
- 17. 在cygwin上安裝Poppler
- 18. pgpool在cygwin上運行
- 19. 在cygwin上安裝rvm
- 20. 在cygwin上安裝mysql
- 21. 的Hadoop在Cygwin上 - DemoWordCount
- 22. 在Cygwin上安裝Pip-3.2
- 23. 在Cygwin上構建OpenSSH
- 24. 讓lcov在Cygwin上工作
- 25. 在cygwin 1.7中生成的.exe沒有在cygwin上運行1.52
- 26. 使用上的cygwin
- 27. LoadError上通過Cygwin
- 28. wxWidgets + Windows上的Cygwin
- 29. 如何在Cygwin上運行XSB?
- 30. 在cygwin上安裝終結器
爲Cygwin和指令的補丁你是對的,也有其他roadbumps。但是你之前已經完成了整個過程,並且已經完成了它的工作? – 2012-04-23 18:22:29
大約一年前我就收集了它,是的(你已經啓發我再次嘗試:D)。如果您使用上面提到的特定修復程序,則會遇到有關rctime模塊未進行翻譯的問題。接受[來自這裏的]建議(https://bugs.pypy.org/issue902),我禁用了rctime和_multiprocessing模塊;不幸的是,這會破壞使用線程的任何代碼。我正在考慮啓用一些可以彌補這一點的Windows功能,但是我還沒有走得很遠。 – Casey 2012-04-23 19:49:24