Vorheriger Beitrag "Erstellen von 7-zip (19.00) für Windows 10 unter ARM mit Visual Studio 2019 (x86) unter Windows 10 unter ARM Dieses Mal habe ich versucht, Python3 zu erstellen.
Ich habe selbst nicht viel Erfahrung mit Python, aber ich habe gesehen, dass es gelegentlich als OSS-Build-Hilfe-Skript verwendet wird. Daher dachte ich, es wäre nützlich, es [hier] nativ zu machen. ](Https://bugs.python.org/issue33125) Ich sah einen Austausch, der etwas zu sein schien, das ich tun konnte, und entschied mich, die Herausforderung anzunehmen.
Dieses Mal werden wir vorerst die 3.8-Serie verwenden, die der aktuelle Stable ist. Obwohl es einige lächerliche Einschränkungen gibt (später beschrieben), konnte ich mit der folgenden Befehlsgruppe schnell erstellen.
git clone https://github.com/python/cpython -b 3.8
cd .\cpython\PCbuild
build.bat -p ARM64 -c Release
Es scheint, dass NuGet beim Erstellen von Python verschiedene externe Module unter ". \ Cpython \ externals" installiert, aber einige externe Module sind für ARM64 nicht enthalten und der Build wird übersprungen.
Unter ihnen dachte ich, es wäre ein bisschen einsam, dass tkinter (TclTk), ein Standard-Python-GUI-Modul, nicht verwendet werden könnte, also habe ich versucht, TclTk zu erstellen.
TclTk, das zum Zeitpunkt dieses Python-Builds von NuGet installiert wurde, war Version 8.6.9, aber ich glaube, dass der Build [hier] etwas einfacher zu übergeben ist (https://www.tcl.tk/software/tcltk/). Laden Sie tcl8610-src.zip und tk8610-src.zip von der Website download.html herunter und extrahieren Sie sie an Ihren Arbeitsort.
Es scheint, dass das Skript es nicht unterstützt, daher habe ich diesmal ARM64 zwangsweise angegeben.
Rules.vc
in. \ Tcl8.6.10 \ win
Stellen Sie ARM64 in Zeile 473 auf den Parameter MACHINE
MACHINE=$(ARCH)
→ MACHINE=ARM64
Außerdem sieht die cpuid-Funktion wie ein Assembler aus, daher habe ich sie diesmal zwangsweise weggelassen.
tclWin32Dll.c
in. \ Tcl8.6.10 \ win
Kommentar aus Zeile 820
__cpuid(regsPtr, index);
→ /*__cpuid(regsPtr, index);*/
Wenn es normal erweitert wird, starten Sie ein Befehlsfenster an den Ordnerpositionen ". \ Tcl8.6.10 \ win" bzw. ". \ Tk8.6.10 \ win".
Bereiten Sie die Toolset-Umgebung wie gewohnt für ARM64 vor
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_arm64
Jetzt fang an zu bauen!
Aus irgendeinem Grund ärgere ich mich jedoch beim Erstellen unter Windows 10 unter ARM darüber, dass "TCLSH_NATIVE nicht festgelegt ist". Daher habe ich vorerst die x86-Version von TclTk angegeben, die von NuGet beim Erstellen von Python installiert wurde. ..
nmake -f makefile.vc release OPTS=threads TCLSH_NATIVE="work\cpython\externals\tcltk-8.6.9.0\win32\bin\tclsh86t.exe"
Grundsätzlich wurde der Build mit dem obigen Befehl übergeben, aber beim Kompilieren des SQLite-Moduls des Tcl-Side-Builds wurde aufgrund eines Fehlers im Zusammenhang mit dem Ressourcen-Compiler, wie unten gezeigt, übersprungen.
.\tcl8.6.10\pkgs\sqlite3.30.1.2\win\Release_ARM64_VC1926\sqlite_ThreadedDynamic\sqlite.rc(4) : error RC2167 : unrecognized VERSIONINFO field; BEGIN or comma expected
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\rc.EXE"' :Rückgabe Code'0x2'
Stop.
Ich dachte, es würde tkinter nicht beeinflussen, also ging ich diese Zeit durch. ^^; Selbst wenn ich Lust dazu habe, werde ich in Zukunft die Handhabung des Ressourcen-Compilers beim Erstellen für ARM64 untersuchen.
Derzeit ist mir der Unterschied in den Versionsnummern egal, und ich stecke im arm64-Ordner von TclTk fest, der beim Erstellen von Python mit NuGet installiert wurde.
nmake -f makefile.vc install INSTALLDIR="work\cpython\externals\tcltk-8.6.9.0\arm64" TCLSH_NATIVE="work\cpython\externals\tcltk-8.6.9.0\win32\bin\tclsh86t.exe"
Jetzt, da TclTk fertig ist, werde ich tkinter erstellen (Python neu erstellen), aber ich war mir nicht sicher, ob es gut neu konfiguriert werden würde, also ist es diesmal in . \ Cpython \ PCbuild
. Ich habe die Visual Studio-IDE von pcbuild.sln` aus gestartet und neu erstellt, indem ich hier in "Build Configuration" tkinter hinzugefügt habe.
Ich habe den Vorgang nicht im Detail überprüft, aber vorerst habe ich es geschafft, den Punkt zu erreichen, an dem das GUI-Fenster von tkinter gestartet wurde.
Ist dies nicht der einzigartige Geschmack einer kleinen Maschine, bei der die Umwelt im Kampf allmählich bereichert wird? Wir hoffen jedoch, dass die offizielle ARM64-Version so bald wie möglich veröffentlicht wird, um die Verbreitung zu fördern.
Recommended Posts