Unofficial
In questa pagina
  1. 01Cosa offre la pagina Toolchains
  2. 02Un runtime nella shell
  3. 03Ambienti di compilazione
  4. 04Compilare un programma in un ambiente
  5. 05Controllare con l'ispettore ELF

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.

  1. Catalogoruntime, compilatori, sistemi
  2. Runtimeeval "$(bvs use …)"
  3. Ambienteun sistema Linux in cui compilare
  4. Compilazionebvs env run
  5. 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:

TipoDescrizioneEsempi
Filesystem radiceun sistema Linux da estrarre in un ambienteDebian 12 e 13, Ubuntu 22.04 e 24.04, Alpine 3.22
Toolchain di compilazione incrociataun compilatore che genera programmi per un altro processoretoolchain Bootlin per aarch64, x86-64 e armv7, con glibc o musl
Runtimeun linguaggio o uno strumento di compilazionePython, Go, Node.js, Zig, Rust, CMake, Ninja, Java
QNAPil kit di compilazione di QNAPQDK 2.5.0, per bvs qbuild ed Export as QPKG
Scheda Runtimes: Go 1.27 installato, con bvs use e Remove; Zig 0.15 con il pulsante Install
  • 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 in toolchains/<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.
Scheda QNAP: QNAP QDK 2.5.0 (qbuild) installato

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.

Voce Go 1.27 installata nella pagina Toolchains: cosa compila, dove si trova sul disco e risultato di bvs use go-1.27-x86_64: export PATH con la cartella bin del runtime, export CGO_ENABLED=0
# 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. Scheda di esempio Ubuntu 24.04 builder (full): pacchetti installati dal processo di creazione, filesystem radice richiesto e Use this example
  • New environment (amministratore) estrae un semplice filesystem radice sotto il nome scelto e lo scarica prima se non è installato. Finestra New environment: Name deb12, Root filesystem Debian 12 bookworm, glibc 2.36 e pulsante Create
  • Ogni ambiente offre Open a shell, che apre l'editor con un terminale già nell'ambiente, oltre a Clone, Export e Delete. Ambienti debian12-builder (glibc 2.36) e ubuntu2404-builder (glibc 2.39), ciascuno con Open a shell, Clone, Export e Delete e il proprio comando bvs env shell

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.

Ispettore ELF: cartella dei progetti selezionata, Path hello/hello, Target This NAS (x86_64), LD_LIBRARY_PATH vuoto Risultati: esaminato sul NAS, x86_64, glibc 2.43, 6 file ELF letti, 0 errori, 0 avvisi; nessun problema: tutti i requisiti dei 6 file sono soddisfatti nelle versioni definite dalle librerie

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.

Requisiti: hello collegato a ld-linux-x86-64.so.2, libc.so.6, libgcc_s.so.1, libm.so.6 e libstdc++.so.6 del NAS e le versioni richieste GLIBC_2.34, GLIBCXX_3.4.32 e altre
  • 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, e bvs 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.