Pre spravne fungovanie toolchainu treba nam rozbehnutu kompilaciu na 2.4 systemy pozri :
Pred tymto krokom je potrebne aby bol mount-nuty phoenix. Postupujte podla: add phoenix to fstab.
Postup:
sudo mkdir /usr/toolchain/ && cd /usr/toolchain/ sudo cp /usr/local/emtest/toolchain/toolchain.tar.gz . sudo tar -xf toolchain.tar.gz
Qmake.conf sa nachadza v zavislosti na systemoch:
Pred tymto krokom je potrebne mat nainstalovanu Qt4/5 podla potreby v systeme. Postupujte podla: Navod na instalaciu vyvojoveho prostredia.
Kubuntu 14.* LTS:
/usr/share/qt4/mkspecs/default/qmake.conf
Kubuntu 16.* LTS: Pre kubuntu 16.* LTS je to potrebne pridat aj do qt5 aj qt4:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/ /usr/share/qt4/mkspecs/linux-g++-64/ /usr/share/qt4/mkspecs/linux-g++-32/
Kubuntu 20.* LTS: Pre kubuntu 20.*LTS staci pridat do:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++
Do qmake.conf pridat riadok
CONFIG += i386 develop
Kvoli kompilacii vozidlovej aplikacie: do qmake.conf pridat riadok
QMAKE_CXXFLAGS += -DI386 -DDEVELOP priprava pre 64.bit QMAKE_CXXFLAGS += -DX86_64 -DDEVELOP
Define develop sa vyuziva na odlisenie vyvojarskeho PC od zariadenia s I386 platformou
V pripade GCC 5.1 a vyssie pre i386, moze linker vyhlasit chyby s nedefinovanymi symbolmi pre std::__cxx11. V takomto pripade je potrebne projekt vykompilovat pre c++11, alebo qmake.conf vypnut nove ABI:
QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0
A pre kompilaciu 32bit aplikacie na 64bit systeme do qmake.conf pridat riadok
QMAKE_CFLAGS = -m32 QMAKE_LFLAGS = -m32
Pridat cestu na phoenixa pre najdenie kompilacnych skriptov:
echo "PATH=/usr/local/emtest/bin/compile_new/:$PATH" >> ~/.bashrc
ALEBO do /etc/environment ALEBO do ~/.profile ALEBO si vytvorime alias na skript compile do bash_aliases
echo "alias compile=/usr/local/emtest/bin/compile_new/compile" >> ~/.bash_aliases
Vytvorenie symlinkov pre platformu RG_CortexA9 do systemovej cestu /usr/local/
ln -s /usr/toolchain/rg_cortexa9/gcc-linaro-arm-linux-gnueabihf /usr/local/gcc-linaro-arm-linux-gnueabihf ln -s /usr/toolchain/rg_cortexa9/colibri-t20 /usr/local/colibri-t20 ln -s /usr/toolchain/rg_cortexa9/Qt5.2_tegra2 /usr/local/Qt5.2_tegra2 ln -s /usr/toolchain/rg_cortexa9/oecore-i686 /usr/local/oecore-i686
Specialitka na kubuntu 20.04 64bit: ak pri kompilacii hlasi chybu “stdlib.h: No such file or directory”, da sa to vyriesit
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf riadok QMAKE_CFLAGS_ISYSTEM = -isystem nahradit riadkom QMAKE_CFLAGS_ISYSTEM = -I
Na kompiláciu sa používa skript compile, ktorý sa nachádza medzi skriptami vo svojom repozitári (viď git howto)
priklad:
scripts/compile Vesna -transdata_cortexa9 -sk scripts/compile AppCore -i386 scripts/compile OnboardComputer/ -emtest_xscale_26 -app -maxcpu scripts/compile Slave -i386 -nobuildnumber -maxcpu -fresh
Pre správne fungovanie kompilácie musí byť upravený .pro súbor podľa scope !!!
i386 {
LIBS += -L./../../lib/i386 \
-Wl,--no-as-needed \
-lusb-1.0 \
-lExoApi \
-lExoTb
QMAKE_CXXFLAGS += -Wall -Werror
}
# stare emtest citacky so systemom 2.4 nepodporuju nastavenie 'no-as-needed'
!emtest_xscale {
LIBS += \
-Wl,--no-as-needed
}
emtest_xscale_26 {
LIBS += \
-L./../../lib/emtest_xscale_26
}
waysion_cortexa8 {
LIBS += \
-L./../../lib/waysion_cortexa8
}
emtest_xscale {
LIBS += -L./../../lib/emtest_xscale \
-liw \
-lmad
}
rg_cortexa9 {
LIBS += \
-L./../../lib/rg_cortexa9
}
transdata_cortexa9 {
LIBS += \
-L./../../lib/transdata_cortexa9
}
Skript kompiluje projekt do adresára l_shadow_builds_<platforma>. V tomto adresári sú adresáre pre kompilovaný projekt a jeho podprojekty kam sa dané podprojekty/projekty kompilujú a okrem toho sú tam adresáre s názvom _pkg_<projekt>. V tomto adresári je vytvorený inštalačný balík pre zariadenie obsahujúci vykompilovanú aplikáciu, podprojekty, utilitky a nakopírované šablóny a prekladový súbor. Obsah tohto adresára je skomprimovaný a tento archív sa nachádza tiež v tomto adresári
EMTEST_XSCALE - stare emtest citacky so systemom 2.4 EMTEST_XSCALE_26 - mijola so systemom 2.6 a vyssie WAYSION_CORTEXA8 - zariadenie od firmy waysion, typ X7 RG_CORTEXA9 - zariadenie od firmy R&G TRANSDATA_CORTEXA9 - nami vyvinuty priemyselny tablet, ktory nikto nechce. Kodove oznacenie 'lacov prasivy tablet' I386 - 32 bitova produkcna platforma X86_64 - 64 bitova produkcna platforma X86_64_TEMP - 64 bitova platforma, na docasne znefunkcnenie funkcionality pokial sa neprepise na podporu 64bit. platformy (napr. kvoli libkam ktore nemame 64 bitove a pod.) DEVELOP - pouziva sa na odlisenie vyvojarskej funkcionality v zdrojovych kodoch. Prosim poriadne porozmyslajte pred pouzitim spominaneho define-u. MIKRO_CORTEXA8 - citacka mikroelektronika
Kompilačný systém umožňuje vytvorenie inštalačného balíka aplikácie s možnosťou rozšírenia o doplnkové moduly. Šablóny obsahujúce konfiguračné súbory, skripty, binárky, prípadne ďalšie súbory sa nachádzajú vo vlastnom repozitári (pozri git howto), ktorý je začlenený od VehicleSystem ako podmodul v adresári package_templates) Momentálne používané moduly aplikácie:
Jeden z povinných parametrov kompilácie je platforma a tá okrem iného aj špecifikuje kt. modifikáciu rozširujúcej šablóny aplikácie požiť, a to nasledovne:
Na obrázku je možné vidieť, že často sú šablóny pre všetky platformy rovnaké (čo riešené symbolickým odkazom na all), ale šablóna môže byť špecifická pre každu platformu. Cieľom je udržať šablóny platforiem jednotné a preto prosím o zváženie, či sa úprava nedá spraviť univerzálne pre všetky platformy.
Kompilačné skripty sa nachádzajú pokope v jednom adresári/repozitári (VehicleSystem ich má začlenený ako podmodul scripts)
sudo apt-get install realpath
export QT_SELECT qt5 ./scripts/compile Vesna -sk -i386 -test