Haben Sie jemals ein Paket namens jll wie Arpack_jll gesehen, als Sie Julia verwendeten? Wenn Sie ein Paket installieren, haben Sie wahrscheinlich meistens ein Paket mit jll als Abhängigkeit. Tatsächlich ist dieses Paket mit jll eine Zusammenstellung von Code, der in einer anderen Sprache als der Julia-Sprache geschrieben ist. Bei der Installation wird die Binärdatei je nach Betriebssystem automatisch heruntergeladen.
Dies wird erreicht BinaryBuilder.jl https://github.com/JuliaPackaging/BinaryBuilder.jl Es ist ein Paket namens.
ich https://www.youtube.com/watch?v=3IyXsBwqll8 Ich kannte die Existenz, indem ich das sah.
Anscheinend wird Docker verwendet, um Code auf verschiedenen Plattformen wie Mac, Windows und Linux zu kompilieren und zu kompilieren. Wenn es zu diesem Zeitpunkt nicht für jedes Betriebssystem funktioniert, scheint die Kompilierungsmethode entsprechend geändert zu werden.
Es ist eine sehr interessante Bibliothek, also habe ich es versucht.
Diesmal habe ich C-LIME eingefügt. https://usqcd-software.github.io/c-lime/ Ein Datenformat für die Gitter-QCD (Gitterquantenfarbdynamik). Ich bin damit überhaupt nicht vertraut, aber die Skala war genau richtig, also habe ich es versucht.
Julia 1.5.2 Mac OS 10.15
Zuerst benötigen Sie Docker, also setzen Sie Docker ein. Hier erfahren Sie, wie Sie Docker installieren. Für Mac
$ brew install docker
$ brew cask install docker
Es sieht so aus, als ob es möglich ist.
Drücken Sie dann in Julia], um den Paketmodus aufzurufen.
add BinaryBuilder
Wird besorgt. Ab dem 17. Oktober 2020 hat sich jedoch etwas an GitHub geändert und es funktioniert nicht mit der aktuellen Version, also anstelle der oben genannten
add BinaryBuilder#f126fe7
Sie müssen die geänderte Version als eingeben.
Nach dem Einsetzen
using BinaryBuilder
BinaryBuilder.run_wizard()
Führen Sie den Assistenten aus.
Make a platform selection
> All Supported Platforms
Select by Operating System
Fully Custom Platform Choice
Wählen Sie dann Alle unterstützten Plattformen
Please enter a URL (git repository or compressed archive) containing the source code to build:
Geben Sie nun die Github-Adresse oder Datei der Software an, die Sie kompilieren möchten. Hier,
https://github.com/usqcd-software/c-lime.git
Es wurde gemacht. Folgen Sie dann den Anweisungen. Die erste Frage ist, welchen der Git-Zweige man wählen soll, aber lassen wir dies als Meister. Dieser Code erfordert keinen zusätzlichen Quellcode oder Bibliotheken. Während Sie fortfahren, Es gibt Dinge wie einen Namen zu geben und eine Version zu geben, also werde ich sie entsprechend einfügen.
Wie Sie fortfahren
sandbox:${WORKSPACE}/srcdir
So etwas wird herauskommen. Kompilieren Sie nun den Code. In diesem Fall,
cd c-lime/
./autogen.sh
./configure --prefix=${prefix} --build=${MACHTYPE} --host=${target}
make
make install
Sie können den Code mit kompilieren. Drücken Sie dann Strg + D, um sich abzumelden. Nächster
Your build script was:
cd $WORKSPACE/srcdir
cd c-lime/
./autogen.sh
./configure --prefix=${prefix} --build=${MACHTYPE} --host=${target}
make
make install
Would you like to edit this script now? [y/N]: n
Da die Kompilierungsmethode zusammengefasst ist, setzen Sie sie auf n, wenn kein besonderes Problem vorliegt. Was kompilierst du dann? So etwas wird angezeigt, drücken Sie also a und dann d. Kompilieren Sie anschließend unter Drücken der Eingabetaste auf verschiedenen Betriebssystemen und Plattformen.
Nun, nachdem es fertig ist,
How should we deploy this build recipe?
> Prepare a pull request against the community buildtree, Yggdrasil
Write to a local file
Print to stdout
Wird gefragt. Wenn Sie die erste auswählen, senden Sie eine Pull-Anfrage an Yggdrasil auf GitHub. Dies bedeutet, hier Informationen zum Kompilieren zu platzieren.
Would you like to actually open the pull request or just prepare it?
> Go ahead, open it
No, just prepare it and let me look at it first
Danach stellen Sie eine Pull-Anfrage mit Ihrem Github-Kontonamen.
Wenn es erfolgreich beendet wird, wird automatisch eine Pull-Anfrage gestellt. Und wenn es kein Problem gibt, wird es in Yggdrasil zusammengeführt. Einmal zusammengeführt, https://github.com/JuliaBinaryWrappers/ Wird in registriert. Wenn Sie sich hier registrieren, sind Sie fertig. https://github.com/JuliaBinaryWrappers/CLIME_jll.jl Ist bereits registriert,
Linux aarch64 {libc=glibc} (aarch64-linux-gnu)
Linux aarch64 {libc=musl} (aarch64-linux-musl)
Linux armv7l {call_abi=eabihf, libc=glibc} (armv7l-linux-gnueabihf)
Linux armv7l {call_abi=eabihf, libc=musl} (armv7l-linux-musleabihf)
Linux i686 {libc=glibc} (i686-linux-gnu)
Linux i686 {libc=musl} (i686-linux-musl)
Windows i686 (i686-w64-mingw32)
Linux powerpc64le {libc=glibc} (powerpc64le-linux-gnu)
macOS x86_64 (x86_64-apple-darwin)
Linux x86_64 {libc=glibc} (x86_64-linux-gnu)
Linux x86_64 {libc=musl} (x86_64-linux-musl)
FreeBSD x86_64 (x86_64-unknown-freebsd)
Windows x86_64 (x86_64-w64-mingw32)
Es wird gesagt, dass die Plattform Binärdateien bereitstellen kann.
Nachdem
add CLIME_jll
Dann können Sie es installieren. Diese CLIME ist keine Bibliothek, sondern ein Typ, der ausgeführt werden soll https://juliapackaging.github.io/BinaryBuilder.jl/dev/jll/ Mit Bezug auf
using CLIME_jll
lime_contents() do exe
run(`$exe`)
end
Auf diese Weise kann die ausführbare Datei `lime_contents``` auf Julia ausgeführt werden. Beachten Sie, dass für diesen Code tatsächlich ein Argument erforderlich ist. Verwenden Sie ihn daher in Form von
run (
$ exe lime_file_test) ``
.
Dieses Mal habe ich BinaryBuilder.jl auf einem Mac ausgeführt, aber allein dadurch wurde eine Julia-Bibliothek für verschiedene Plattformen erstellt. Ich bin überrascht.