Unofficial
Na této stránce
  1. 01Co nabízí stránka Toolchains
  2. 02Běhové prostředí v shellu
  3. 03Prostředí pro sestavování
  4. 04Kompilace programu v prostředí
  5. 05Ověření inspektorem ELF

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.

  1. Katalogběhová prostředí, kompilátory, systémy
  2. Běhové prostředíeval "$(bvs use …)"
  3. Prostředísystém Linux pro sestavování
  4. Sestaveníbvs env run
  5. 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:

TypPopisPříklady
Kořenový souborový systémsysté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 kompilacikompilátor, který sestavuje pro jiný procesorsady 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
QNAPvlastní sada nástrojů QNAP pro sestavováníQDK 2.5.0, pro bvs qbuild a Export as QPKG
Karta Runtimes: nainstalované Go 1.27, s bvs use a Remove; Zig 0.15 s tlačítkem Install
  • 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 do toolchains/<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ě.
Karta QNAP: nainstalovaný QNAP QDK 2.5.0 (qbuild)

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.

Nainstalovaná položka Go 1.27 na stránce Toolchains: co sestavuje, kde je na disku a výstup bvs use go-1.27-x86_64: export PATH se složkou bin běhového prostředí, export CGO_ENABLED=0
# 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. Karta příkladu Ubuntu 24.04 builder (full): balíčky instalované úlohou vytvoření, požadovaný kořenový souborový systém a Use this example
  • New environment (správce) rozbalí čistý kořenový souborový systém pod zvoleným názvem a nejprve jej stáhne, pokud není nainstalovaný. Dialog New environment: Name deb12, Root filesystem Debian 12 bookworm, glibc 2.36 a tlačítko Create
  • 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. Prostředí debian12-builder (glibc 2.36) a ubuntu2404-builder (glibc 2.39), každé s Open a shell, Clone, Export a Delete a vlastním příkazem bvs env shell

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.

Inspektor ELF: vybraná složka projektů, Path hello/hello, Target This NAS (x86_64), LD_LIBRARY_PATH prázdné Výsledky: posouzeno na NAS, x86_64, glibc 2.43, přečteno 6 souborů ELF, 0 chyb, 0 varování; žádný problém: všechny požadavky 6 souborů byly nalezeny ve verzích definovaných knihovnami

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.

Požadavky: hello propojené s ld-linux-x86-64.so.2, libc.so.6, libgcc_s.so.1, libm.so.6 a libstdc++.so.6 z NAS a potřebné verze GLIBC_2.34, GLIBCXX_3.4.32 a další
  • 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 a bvs 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.