Kompilátory, běhová prostředí a prostředí pro sestavování na NAS
QTS nemá kompilátor. Bucket & Code Server IDE stahuje běhová prostředí jazyků, křížové kompilátory a celé systémy Linux pro sestavování, ověřuje každý stažený soubor podle sha256 a uchovává je v datové složce. Tento návod nic nového neinstaluje: využívá nástroje prostředí pro sestavování a běhového prostředí Go, zkompiluje malý program a ověří, že funguje na NAS.
- Katalogběhová prostředí, kompilátory, systémy
- Běhové prostředíeval "$(bvs use …)"
- Prostředísystém Linux pro sestavování
- Sestaveníbvs env run
- Ověřeníinspektor ELF
Snímky pocházejí z panelu Bucket & Code Server IDE na testovacím NAS s datovou složkou /share/CACHEDEV1_DATA/BucketVS.
01Co nabízí stránka Toolchains
Stránka Toolchains zobrazuje katalog rozdělený do karet:
| Typ | Popis | Příklady |
|---|---|---|
| Kořenový souborový systém | systém Linux k rozbalení do prostředí | Debian 12 a 13, Ubuntu 22.04 a 24.04, Alpine 3.22 |
| Sada nástrojů pro křížovou kompilaci | kompilátor, který sestavuje pro jiný procesor | sady nástrojů Bootlin pro aarch64, x86-64 a armv7, s glibc nebo musl |
| Běhové prostředí | jazyk nebo nástroj pro sestavování | Python, Go, Node.js, Zig, Rust, CMake, Ninja, Java |
| QNAP | vlastní sada nástrojů QNAP pro sestavování | QDK 2.5.0, pro bvs qbuild a Export as QPKG |
- Install vyžaduje roli správce. Úloha stáhne archiv do
toolchains/cache/v datové složce, ověří jeho sha256 podle katalogu (neshoda soubor odstraní) a rozbalí běhové prostředí nebo sadu pro křížovou kompilaci dotoolchains/<kind>/<id>. Průběh je na stránce Jobs; přerušené stahování pokračuje při opětovném zahájení instalace. - Položky pro jiný procesor jsou skryté. Sady nástrojů Bootlin pro křížovou kompilaci běží na x86_64, takže NAS s ARM žádnou nenabízí.
- Katalog je součástí balíčku. Podepsaný katalog z pub.qnaputilities.com může přidávat položky bez nového balíčku; Refresh the catalog jej stáhne okamžitě a vestavěná úloha cron jej stahuje denně.
02Běhové prostředí v shellu
bvs use u nainstalované položky zobrazí řádky, které umožní její použití v shellu, například v terminálu editoru nebo v úloze cron.
# v terminálu editoru (Open the editor na stránce Editor settings)
eval "$(bvs use go-1.27-x86_64)"
go version
go build -o hello-go hello.go
./hello-go
Běhové prostředí Go nastavuje CGO_ENABLED=0, takže jeho programy jsou statické a fungují na libovolném NAS se stejným procesorem. Sada pro křížovou kompilaci funguje stejně: eval "$(bvs use bootlin-aarch64-glibc-stable)" zpřístupní kompilátor pro 64bitová zařízení ARM.
03Prostředí pro sestavování
Prostředí je systém Linux rozbalený do envs/<name> v datové složce. Můžete do něj instalovat balíčky (apt install build-essential v Debianu nebo Ubuntu) a vše nainstalované zůstane zachováno. Složka projektů z datové složky je uvnitř dostupná jako /projects.
- Nejrychlejší cestou k prostředí se vším pro sestavování je předvolba z Examples na stránce Apps (správce): Ubuntu 24.04 builder nainstaluje nástroje pomocí apt-get, než se prostředí objeví v seznamu. Jeho glibc má verzi 2.39, nejnižší ze všech NAS podporovaných balíčkem, takže v něm sestavené programy fungují na všech těchto NAS.

- New environment (správce) rozbalí čistý kořenový souborový systém pod zvoleným názvem a nejprve jej stáhne, pokud není nainstalovaný.

- Každé prostředí má Open a shell, které otevře editor s terminálem již uvnitř prostředí, a dále Clone, Export a Delete.

04Kompilace programu v prostředí
Z libovolného terminálu na NAS otevře bvs env shell <name> shell v prostředí a bvs env run <name> -- <command> v něm spustí jeden příkaz. Oba začínají ve složce, ze které je spouštíte: podsložka složky projektů odpovídá stejné podsložce pod /projects uvnitř prostředí.
# hello.cpp ve složce pod projects/, v terminálu editoru
bvs env run ubuntu2404-builder -- g++ -O2 -o hello hello.cpp
./hello
Kompilátor a jeho knihovny pocházejí z prostředí; program běží přímo na NAS. Zda tam najde vše potřebné, ověří další krok.
05Ověření inspektorem ELF
Karta ELF inspector na stránce Toolchains (role vývojáře) čte program nebo knihovnu a vlastní data zavaděče cílového systému, aniž by cokoli spouštěla. Ukáže, zda tento NAS nebo prostředí poskytuje vše potřebné. Vyberte umístění souboru (sestavení aplikace, složku projektů, prostředí nebo pro správce libovolný soubor na NAS), cíl a stiskněte Inspect.
What it needs vykreslí program, načítané knihovny a umístění každé z nich spolu s požadovanými verzemi. Zde program C++ potřebuje libstdc++.so.6 a libc.so.6 a tento NAS má obě knihovny s požadovanými verzemi.
- Chybějící knihovna, verze, kterou knihovna neposkytuje, nebo glibc novější než v cílovém systému vytvoří nález s vysvětlením. Zvolte prostředí jako cíl a posuďte stejný program tak, jak by běžel v něm.
- Na NAS vypíše
bvs ldd <file>stejné výsledky abvs ldd --env <name> <file>totéž pro prostředí. - U programů, které distribuujete, provede App Builder tuto kontrolu pro každý soubor každého sestavení a karta Dependencies nabídne opravy.