Unofficial
Na tej stronie
  1. 01Co oferuje strona Toolchains
  2. 02Środowisko uruchomieniowe w powłoce
  3. 03Środowiska budowania
  4. 04Kompilowanie programu w środowisku
  5. 05Sprawdzenie inspektorem ELF

Kompilatory, środowiska uruchomieniowe i środowiska budowania na NAS-ie

QTS nie ma kompilatora. Bucket & Code Server IDE pobiera środowiska uruchomieniowe języków, kompilatory skrośne i całe systemy Linux do budowania, sprawdza sumę sha256 każdego pobranego pliku i przechowuje je w katalogu danych. W tym poradniku niczego nowego nie instalujemy: korzystamy z narzędzi dostępnych w środowisku budowania i środowisku Go, kompilujemy mały program i sprawdzamy, czy działa na NAS-ie.

  1. Katalogśrodowiska uruchomieniowe, kompilatory, systemy
  2. Środowisko uruchomienioweeval "$(bvs use …)"
  3. Środowiskosystem Linux do budowania
  4. Budowaniebvs env run
  5. Sprawdzenieinspektor ELF

Zrzuty pochodzą z panelu Bucket & Code Server IDE na testowym NAS-ie, którego katalog danych to /share/CACHEDEV1_DATA/BucketVS.

01Co oferuje strona Toolchains

Strona Toolchains wyświetla katalog podzielony na karty:

TypCo to jestPrzykłady
Główny system plikówsystem Linux do rozpakowania w środowiskuDebian 12 i 13, Ubuntu 22.04 i 24.04, Alpine 3.22
Zestaw narzędzi do kompilacji skrośnejkompilator tworzący programy dla innego procesorazestawy Bootlin dla aarch64, x86-64 i armv7, z glibc lub musl
Środowisko uruchomieniowejęzyk lub narzędzie do budowaniaPython, Go, Node.js, Zig, Rust, CMake, Ninja, Java
QNAPwłasny zestaw narzędzi QNAP do budowaniaQDK 2.5.0, dla bvs qbuild i Export as QPKG
Karta Runtimes: Go 1.27 zainstalowane, z bvs use i Remove; Zig 0.15 z przyciskiem Install
  • Install wymaga roli administratora. Zadanie pobiera archiwum do toolchains/cache/ w katalogu danych, sprawdza jego sumę sha256 względem katalogu (niezgodność powoduje usunięcie pliku) i rozpakowuje środowisko uruchomieniowe lub zestaw do kompilacji skrośnej w toolchains/<kind>/<id>. Postęp widać na stronie Jobs, a przerwane pobieranie jest wznawiane po ponownym rozpoczęciu instalacji.
  • Pozycje dla innego procesora są ukryte. Zestawy Bootlin do kompilacji skrośnej działają na x86_64, więc na NAS-ie ARM nie są dostępne.
  • Katalog jest dostarczany z pakietem. Podpisany katalog z pub.qnaputilities.com może dodawać pozycje bez nowego pakietu; Refresh the catalog pobiera go od razu, a wbudowane zadanie cron robi to codziennie.
Karta QNAP: zainstalowany QNAP QDK 2.5.0 (qbuild)

02Środowisko uruchomieniowe w powłoce

bvs use przy zainstalowanej pozycji pokazuje wiersze włączające ją w powłoce, na przykład w terminalu edytora lub w zadaniu cron.

Zainstalowana pozycja Go 1.27 na stronie Toolchains: co buduje, gdzie jest na dysku i wynik bvs use go-1.27-x86_64: export PATH z folderem bin środowiska oraz export CGO_ENABLED=0
# w terminalu edytora (Open the editor na stronie Editor settings)
eval "$(bvs use go-1.27-x86_64)"
go version
go build -o hello-go hello.go
./hello-go

Środowisko Go ustawia CGO_ENABLED=0, więc jego programy są statyczne i działają na dowolnym NAS-ie z takim samym procesorem. Zestaw do kompilacji skrośnej działa podobnie: eval "$(bvs use bootlin-aarch64-glibc-stable)" udostępnia kompilator dla urządzeń ARM 64-bit.

03Środowiska budowania

Środowisko to system Linux rozpakowany w envs/<name> w katalogu danych. Można w nim instalować pakiety (apt install build-essential na Debianie lub Ubuntu), a zainstalowane składniki pozostają. Folder projektów z katalogu danych jest w nim dostępny jako /projects.

  • Najszybciej przygotujesz kompletne środowisko budowania, wybierając gotowy przykład w Examples na stronie Apps (wymagana rola administratora): Ubuntu 24.04 builder instaluje narzędzia budowania przez apt-get, zanim środowisko pojawi się na liście. Ma glibc 2.39, najniższą wersję spotykaną na NAS-ach obsługiwanych przez pakiet, więc zbudowane w nim programy działają na nich wszystkich. Karta przykładu Ubuntu 24.04 builder (full): pakiety instalowane przez zadanie tworzenia, wymagany główny system plików i Use this example
  • New environment (administrator) rozpakowuje zwykły główny system plików pod wybraną nazwą, a jeśli nie jest zainstalowany, najpierw go pobiera. Okno New environment: Name deb12, Root filesystem Debian 12 bookworm, glibc 2.36 i przycisk Create
  • Każde środowisko ma Open a shell, które otwiera edytor z terminalem już wewnątrz środowiska, oraz Clone, Export i Delete. Środowiska debian12-builder (glibc 2.36) i ubuntu2404-builder (glibc 2.39), każde z Open a shell, Clone, Export i Delete oraz swoim poleceniem bvs env shell

04Kompilowanie programu w środowisku

Z dowolnego terminalu na NAS-ie bvs env shell <name> otwiera powłokę w środowisku, a bvs env run <name> -- <command> wykonuje w nim jedno polecenie. Oba zaczynają w folderze, z którego je uruchomiono: folder wewnątrz katalogu projektów to ten sam folder pod /projects w środowisku.

# hello.cpp w folderze projects/, w terminalu edytora
bvs env run ubuntu2404-builder -- g++ -O2 -o hello hello.cpp
./hello

Kompilator i jego biblioteki pochodzą ze środowiska; program działa na samym NAS-ie. W kolejnym kroku sprawdzimy, czy znajdzie tam wszystko, czego potrzebuje.

05Sprawdzenie inspektorem ELF

Karta ELF inspector na stronie Toolchains (rola developera) odczytuje program lub bibliotekę oraz dane programu ładującego systemu docelowego, niczego nie uruchamiając. Pokazuje, czy NAS lub środowisko zapewnia to, czego plik wymaga. Wybierz lokalizację pliku (wynik budowania aplikacji, folder projektów, środowisko lub, dla administratora, dowolny plik na NAS-ie), cel i naciśnij Inspect.

Inspektor ELF: wybrano folder projektów, Path hello/hello, Target This NAS (x86_64), LD_LIBRARY_PATH puste Wyniki: sprawdzono na NAS-ie, x86_64, glibc 2.43, odczytano 6 plików ELF, 0 błędów, 0 ostrzeżeń; brak problemów: znaleziono wszystkie wymagania 6 plików, w wersjach udostępnianych przez biblioteki

What it needs rysuje program, ładowane biblioteki i lokalizację każdej z nich, wraz z wymaganymi wersjami. Tutaj program C++ potrzebuje libstdc++.so.6 i libc.so.6, a NAS ma obie biblioteki udostępniające wymagane wersje.

Wymagania: hello połączone z ld-linux-x86-64.so.2, libc.so.6, libgcc_s.so.1, libm.so.6 i libstdc++.so.6 z NAS-a oraz potrzebne wersje: GLIBC_2.34, GLIBCXX_3.4.32 i inne
  • Brakująca biblioteka, wersja nieudostępniana przez bibliotekę lub glibc nowsza niż w systemie docelowym daje wynik z wyjaśnieniem. Wybierz środowisko jako cel, aby sprawdzić ten sam program tak, jak działałby w nim.
  • Na NAS-ie bvs ldd <file> wypisuje ten sam wynik, a bvs ldd --env <name> <file> robi to dla środowiska.
  • Dla programów, które dostarczasz, App Builder wykonuje to dla każdego pliku każdego buildu, a karta Dependencies proponuje rozwiązania.