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.
- Catalogueenvironnements d'exécution, compilateurs, systèmes
- Exécutioneval "$(bvs use …)"
- Environnementun système Linux pour compiler
- Compilationbvs env run
- 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 :
| Type | Description | Exemples |
|---|---|---|
| Système de fichiers racine | un système Linux à décompresser dans un environnement | Debian 12 et 13, Ubuntu 22.04 et 24.04, Alpine 3.22 |
| Chaîne de compilation croisée | un compilateur qui cible un autre processeur | chaînes Bootlin pour aarch64, x86-64 et armv7, avec glibc ou musl |
| Environnement d'exécution | un langage ou un outil de compilation | Python, Go, Node.js, Zig, Rust, CMake, Ninja, Java |
| QNAP | le kit de compilation de QNAP | QDK 2.5.0, pour bvs qbuild et Export as QPKG |
- 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 danstoolchains/<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.
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.
# 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.

- 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é.

- Chaque environnement propose Open a shell, qui ouvre l'éditeur avec un terminal déjà dans cet environnement, ainsi que Clone, Export et Delete.

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.
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.
- 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, etbvs 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.