Avez-vous déjà vu un package nommé jll, comme Arpack_jll, lors de l'utilisation de Julia? La plupart du temps, lorsque vous installez un package, vous avez probablement un package avec jll comme dépendance. En fait, ce package avec jll est une compilation de code écrit dans un langage autre que le langage Julia. Lors de l'installation, le binaire sera téléchargé automatiquement en fonction du système d'exploitation.
Ceci est réalisé BinaryBuilder.jl https://github.com/JuliaPackaging/BinaryBuilder.jl C'est un package appelé.
je https://www.youtube.com/watch?v=3IyXsBwqll8 J'ai connu l'existence en voyant cela.
Apparemment, Docker est utilisé pour la compilation croisée et la compilation de code sur diverses plates-formes telles que Mac, Windows et Linux. À ce moment-là, si cela ne fonctionne pas pour chaque OS, il semble que la méthode de compilation soit modifiée comme il convient.
C'est une bibliothèque très intéressante, alors je l'ai essayée.
Cette fois, j'ai mis C-LIME. https://usqcd-software.github.io/c-lime/ Un format de données pour la QCD de réseau (dynamique des couleurs quantiques de réseau). Je ne suis pas du tout familier avec cela, mais l'échelle était juste, alors je l'ai essayé.
Julia 1.5.2 Mac OS 10.15
Tout d'abord, vous avez besoin de Docker, alors mettez Docker dedans. Veuillez découvrir comment installer Docker. Pour Mac
$ brew install docker
$ brew cask install docker
Il semble que cela puisse être fait.
Puis dans Julia, appuyez sur] pour passer en mode package,
add BinaryBuilder
ça ira. Cependant, à partir du 17 octobre 2020, quelque chose a changé sur GitHub et cela ne fonctionnera pas avec la version actuelle, donc au lieu de ce qui précède
add BinaryBuilder#f126fe7
Vous devez mettre la version modifiée sous la forme.
Après l'avoir mis
using BinaryBuilder
BinaryBuilder.run_wizard()
Et lancez l'assistant.
Make a platform selection
> All Supported Platforms
Select by Operating System
Fully Custom Platform Choice
Ensuite, sélectionnez Toutes les plates-formes prises en charge
Please enter a URL (git repository or compressed archive) containing the source code to build:
Spécifiez maintenant l'adresse github ou le fichier du logiciel que vous souhaitez compiler. ici,
https://github.com/usqcd-software/c-lime.git
C'était fabriqué. Suivez ensuite les instructions. La première question est de savoir laquelle des branches git choisir, mais laissons cela comme maître. Ce code ne nécessite aucun code source ou bibliothèque supplémentaire. Au fur et à mesure que vous avancez, Il y a des choses comme donner un nom et donner une version, donc je vais le mettre comme il convient.
Au fur et à mesure que vous avancez
sandbox:${WORKSPACE}/srcdir
Quelque chose comme ça sortira. Maintenant compilez le code. Dans ce cas,
cd c-lime/
./autogen.sh
./configure --prefix=${prefix} --build=${MACHTYPE} --host=${target}
make
make install
Vous pouvez compiler le code avec. Appuyez ensuite sur Ctrl + D pour vous déconnecter. prochain
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
La méthode de compilation étant résumée, définissez-la sur n s'il n'y a pas de problème particulier. Alors que compilez-vous? Quelque chose comme ça apparaîtra, alors appuyez sur a puis sur d. Après cela, tout en appuyant sur Entrée, compilez sur divers systèmes d'exploitation et plates-formes.
Eh bien, après que c'est fait,
How should we deploy this build recipe?
> Prepare a pull request against the community buildtree, Yggdrasil
Write to a local file
Print to stdout
Sera demandé. Si vous choisissez le premier, vous ferez une pull request à Yggdrasil sur GitHub. Cela signifie mettre ici des informations sur la façon de compiler.
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
Après cela, vous ferez une demande d'extraction avec le nom de votre compte github.
S'il se termine avec succès, une demande d'extraction sera effectuée automatiquement. Et s'il n'y a pas de problème, il sera fusionné dans Yggdrasil. Une fois fusionné, https://github.com/JuliaBinaryWrappers/ Sera enregistré dans. Si vous vous inscrivez ici, vous avez terminé. https://github.com/JuliaBinaryWrappers/CLIME_jll.jl Est déjà enregistré,
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)
On dit que la plateforme peut fournir des binaires.
Après ça
add CLIME_jll
Ensuite, vous pouvez l'installer. Ce CLIME n'est pas une bibliothèque mais un type à exécuter, donc https://juliapackaging.github.io/BinaryBuilder.jl/dev/jll/ En référence à
using CLIME_jll
lime_contents() do exe
run(`$exe`)
end
Ce faisant, le fichier exécutable lime_contents '' peut être exécuté sur Julia. Notez que ce code nécessite en fait un argument, alors utilisez-le sous la forme de
run (
$ exe lime_file_test) ``
.
Cette fois, j'ai exécuté BinaryBuilder.jl sur un Mac, mais cela seul a créé une bibliothèque Julia pour différentes plates-formes. Je suis surpris.