Compilatori, runtime e ambienti di compilazione sul NAS
QTS non include un compilatore. Bucket & Code Server IDE scarica runtime dei linguaggi, compilatori incrociati e interi sistemi Linux per compilare, verifica ogni download tramite sha256 e li conserva nella cartella dei dati. Questa guida non installa nulla di nuovo: usa gli strumenti di un ambiente di compilazione e del runtime Go, compila un piccolo programma e verifica che funzioni sul NAS.
- Catalogoruntime, compilatori, sistemi
- Runtimeeval "$(bvs use …)"
- Ambienteun sistema Linux in cui compilare
- Compilazionebvs env run
- Controllol'ispettore ELF
Le immagini provengono dal pannello di Bucket & Code Server IDE su un NAS di prova la cui cartella dei dati è /share/CACHEDEV1_DATA/BucketVS.
01Cosa offre la pagina Toolchains
La pagina Toolchains presenta un catalogo suddiviso in schede:
| Tipo | Descrizione | Esempi |
|---|---|---|
| Filesystem radice | un sistema Linux da estrarre in un ambiente | Debian 12 e 13, Ubuntu 22.04 e 24.04, Alpine 3.22 |
| Toolchain di compilazione incrociata | un compilatore che genera programmi per un altro processore | toolchain Bootlin per aarch64, x86-64 e armv7, con glibc o musl |
| Runtime | un linguaggio o uno strumento di compilazione | Python, Go, Node.js, Zig, Rust, CMake, Ninja, Java |
| QNAP | il kit di compilazione di QNAP | QDK 2.5.0, per bvs qbuild ed Export as QPKG |
- Install richiede il ruolo amministratore. Il processo scarica l'archivio in
toolchains/cache/nella cartella dei dati, confronta il suo sha256 con il catalogo (una differenza elimina il file) ed estrae un runtime o una toolchain incrociata intoolchains/<kind>/<id>. L'avanzamento è visibile nella pagina Jobs; un download interrotto riprende quando si riavvia l'installazione. - Le voci per un altro processore sono nascoste. Le toolchain incrociate Bootlin funzionano su x86_64, quindi su un NAS ARM non sono disponibili.
- Il catalogo è incluso nel pacchetto. Un catalogo firmato da pub.qnaputilities.com può aggiungere voci senza un nuovo pacchetto; Refresh the catalog lo recupera subito, mentre un processo cron integrato lo fa ogni giorno.
02Un runtime nella shell
bvs use su una voce installata mostra le righe che ne consentono l'uso in una shell, per esempio nel terminale dell'editor o in un processo cron.
# nel terminale dell'editor (Open the editor nella pagina Editor settings)
eval "$(bvs use go-1.27-x86_64)"
go version
go build -o hello-go hello.go
./hello-go
Il runtime Go imposta CGO_ENABLED=0, quindi i suoi programmi sono statici e funzionano su qualsiasi NAS con lo stesso processore. Una toolchain incrociata si usa allo stesso modo: eval "$(bvs use bootlin-aarch64-glibc-stable)" fornisce un compilatore per dispositivi ARM a 64 bit.
03Ambienti di compilazione
Un ambiente è un sistema Linux estratto in envs/<name> nella cartella dei dati. Puoi installarvi pacchetti (apt install build-essential su Debian o Ubuntu), che rimangono installati. La cartella dei progetti della cartella dei dati è disponibile al suo interno come /projects.
- Il modo più rapido per avere tutto il necessario è un modello di Examples nella pagina Apps (amministratore): Ubuntu 24.04 builder installa gli strumenti di compilazione con apt-get prima di comparire. La sua glibc è 2.39, la versione più bassa tra i NAS supportati dal pacchetto, quindi i programmi compilati funzionano su tutti questi NAS.

- New environment (amministratore) estrae un semplice filesystem radice sotto il nome scelto e lo scarica prima se non è installato.

- Ogni ambiente offre Open a shell, che apre l'editor con un terminale già nell'ambiente, oltre a Clone, Export e Delete.

04Compilare un programma in un ambiente
Da qualsiasi terminale sul NAS, bvs env shell <name> entra in un ambiente e bvs env run <name> -- <command> vi esegue un comando. Entrambi iniziano nella cartella da cui li avvii: una cartella sotto quella dei progetti corrisponde alla stessa cartella sotto /projects all'interno.
# hello.cpp in una cartella di projects/, nel terminale dell'editor
bvs env run ubuntu2404-builder -- g++ -O2 -o hello hello.cpp
./hello
Il compilatore e le sue librerie provengono dall'ambiente; il programma viene eseguito sul NAS stesso. Il passaggio successivo verifica se vi trova tutto ciò che serve.
05Controllare con l'ispettore ELF
La scheda ELF inspector della pagina Toolchains (ruolo sviluppatore) legge un programma o una libreria e i dati del caricatore della destinazione, senza eseguire nulla, e indica se questo NAS o un ambiente soddisfa i requisiti. Scegli la posizione del file (compilazione di un'app, cartella dei progetti, ambiente o, per un amministratore, qualsiasi file sul NAS), la destinazione e premi Inspect.
What it needs rappresenta il programma, le librerie caricate e la posizione di ciascuna, con le versioni richieste. Qui il programma C++ richiede libstdc++.so.6 e libc.so.6, e questo NAS possiede entrambe con le versioni necessarie.
- Una libreria mancante, una versione non fornita dalla libreria o una glibc più recente di quella della destinazione produce un risultato con la motivazione. Scegli un ambiente come destinazione per verificare lo stesso programma come se fosse eseguito al suo interno.
- Sul NAS,
bvs ldd <file>stampa gli stessi risultati, ebvs ldd --env <name> <file>lo fa per un ambiente. - Per i programmi che distribuisci, App Builder esegue questo controllo su ogni file di ogni compilazione e la scheda Dependencies propone le correzioni.