Unofficial
Sur cette page
  1. 01Ce que propose la page Toolchains
  2. 02Un environnement d'exécution dans votre shell
  3. 03Environnements de compilation
  4. 04Compiler un programme dans un environnement
  5. 05Vérifier avec l'inspecteur ELF

Compilateurs, environnements d'exécution et de compilation sur votre NAS

QTS n'a pas de compilateur. Bucket & Code Server IDE télécharge des environnements d'exécution, des compilateurs croisés et des systèmes Linux complets pour compiler, vérifie chaque téléchargement avec son sha256 et les conserve dans son dossier de données. Ce guide n'installe rien de nouveau : il utilise les outils d'un environnement de compilation et de Go, compile un petit programme et vérifie qu'il fonctionne sur le NAS.

  1. Catalogueenvironnements d'exécution, compilateurs, systèmes
  2. Exécutioneval "$(bvs use …)"
  3. Environnementun système Linux pour compiler
  4. Compilationbvs env run
  5. Vérificationl'inspecteur ELF

Les captures proviennent du panneau de Bucket & Code Server IDE sur un NAS de test dont le dossier de données est /share/CACHEDEV1_DATA/BucketVS.

01Ce que propose la page Toolchains

La page Toolchains présente un catalogue par onglets :

TypeDescriptionExemples
Système de fichiers racineun système Linux à décompresser dans un environnementDebian 12 et 13, Ubuntu 22.04 et 24.04, Alpine 3.22
Chaîne de compilation croiséeun compilateur qui cible un autre processeurchaînes Bootlin pour aarch64, x86-64 et armv7, avec glibc ou musl
Environnement d'exécutionun langage ou un outil de compilationPython, Go, Node.js, Zig, Rust, CMake, Ninja, Java
QNAPle kit de compilation de QNAPQDK 2.5.0, pour bvs qbuild et Export as QPKG
Onglet Runtimes : Go 1.27 installé, avec bvs use et Remove ; Zig 0.15 avec son bouton Install
  • Install nécessite le rôle administrateur. La tâche télécharge l'archive dans toolchains/cache/ du dossier de données, vérifie son sha256 avec le catalogue (une différence supprime le fichier) et décompresse l'environnement d'exécution ou la chaîne croisée dans toolchains/<kind>/<id>. Sa progression figure sur la page Jobs ; un téléchargement interrompu reprend au prochain lancement de l'installation.
  • Les entrées pour un autre processeur sont masquées. Les chaînes croisées Bootlin fonctionnent sur x86_64 ; un NAS ARM n'en propose donc aucune.
  • Le catalogue est fourni avec le paquet. Un catalogue signé de pub.qnaputilities.com peut ajouter des entrées sans nouveau paquet ; Refresh the catalog le récupère immédiatement et une tâche cron intégrée le fait chaque jour.
Onglet QNAP : QNAP QDK 2.5.0 (qbuild) installé

02Un environnement d'exécution dans votre shell

bvs use sur une entrée installée affiche les lignes permettant de l'utiliser dans un shell, par exemple le terminal de l'éditeur ou une tâche cron.

Entrée Go 1.27 installée sur la page Toolchains : ce qu'elle compile, son emplacement sur disque et la sortie de bvs use go-1.27-x86_64 : export PATH avec le dossier bin de l'environnement d'exécution, export CGO_ENABLED=0
# dans le terminal de l'éditeur (Open the editor sur la page Editor settings)
eval "$(bvs use go-1.27-x86_64)"
go version
go build -o hello-go hello.go
./hello-go

L'environnement Go définit CGO_ENABLED=0 ; ses programmes sont donc statiques et fonctionnent sur tout NAS doté du même processeur. Une chaîne croisée s'utilise de la même façon : eval "$(bvs use bootlin-aarch64-glibc-stable)" fournit un compilateur pour les appareils ARM 64 bits.

03Environnements de compilation

Un environnement est un système Linux décompressé dans envs/<name> du dossier de données. Vous pouvez y installer des paquets (apt install build-essential sous Debian ou Ubuntu), qui restent installés. Le dossier des projets du dossier de données y apparaît sous /projects.

  • Pour obtenir rapidement tout le nécessaire, utilisez un préréglage de la galerie Examples sur la page Apps (administrateur) : Ubuntu 24.04 builder installe les outils de compilation avec apt-get avant d'apparaître. Sa glibc est la version 2.39, la plus ancienne des NAS sur lesquels le paquet fonctionne ; ses programmes compilés fonctionnent donc sur tous ces NAS. Carte d'exemple Ubuntu 24.04 builder (full) : paquets installés par la tâche de création, système de fichiers racine requis et Use this example
  • New environment (administrateur) décompresse un système de fichiers racine simple sous le nom choisi et le télécharge d'abord s'il n'est pas installé. Fenêtre New environment : Name deb12, Root filesystem Debian 12 bookworm, glibc 2.36 et bouton Create
  • Chaque environnement propose Open a shell, qui ouvre l'éditeur avec un terminal déjà dans cet environnement, ainsi que Clone, Export et Delete. Environnements debian12-builder (glibc 2.36) et ubuntu2404-builder (glibc 2.39), chacun avec Open a shell, Clone, Export et Delete, et sa commande bvs env shell

04Compiler un programme dans un environnement

Depuis n'importe quel terminal du NAS, bvs env shell <name> entre dans un environnement et bvs env run <name> -- <command> y exécute une commande. Les deux démarrent dans le dossier depuis lequel vous les lancez : un sous-dossier du dossier des projets correspond au même sous-dossier sous /projects à l'intérieur.

# hello.cpp dans un sous-dossier de projects/, dans le terminal de l'éditeur
bvs env run ubuntu2404-builder -- g++ -O2 -o hello hello.cpp
./hello

Le compilateur et ses bibliothèques viennent de l'environnement ; le programme s'exécute sur le NAS lui-même. L'étape suivante vérifie s'il y trouve ce dont il a besoin.

05Vérifier avec l'inspecteur ELF

L'onglet ELF inspector de la page Toolchains (rôle développeur) lit un programme ou une bibliothèque et les données du chargeur de la cible, sans rien exécuter, puis indique si ce NAS ou un environnement satisfait ses besoins. Choisissez l'emplacement du fichier (compilation d'une application, dossier des projets, environnement ou, pour un administrateur, tout fichier du NAS), la cible, puis cliquez sur Inspect.

Inspecteur ELF : dossier des projets sélectionné, Path hello/hello, Target This NAS (x86_64), LD_LIBRARY_PATH vide Résultats : examiné sur le NAS, x86_64, glibc 2.43, 6 fichiers ELF lus, 0 erreur, 0 avertissement ; aucun problème : tous les besoins des 6 fichiers sont satisfaits par des versions définies dans les bibliothèques

What it needs représente le programme, les bibliothèques qu'il charge et l'emplacement de chacune, avec les versions demandées. Ici, le programme C++ nécessite libstdc++.so.6 et libc.so.6, et ce NAS possède les deux avec les versions requises.

Dépendances : hello relié à ld-linux-x86-64.so.2, libc.so.6, libgcc_s.so.1, libm.so.6 et libstdc++.so.6 du NAS, ainsi que les versions requises : GLIBC_2.34, GLIBCXX_3.4.32 et autres
  • Une bibliothèque absente, une version qu'elle ne fournit pas ou une glibc plus récente que celle de la cible produit un résultat avec son explication. Choisissez un environnement comme cible pour examiner le même programme tel qu'il y fonctionnerait.
  • Sur le NAS, bvs ldd <file> affiche les mêmes résultats, et bvs ldd --env <name> <file> fait de même pour un environnement.
  • Pour les programmes que vous distribuez, App Builder effectue cette vérification sur chaque fichier de chaque compilation, et son onglet Dependencies propose les corrections.