======= Stiahnutie a instalacia zavislosti ====== Stiahnut vhodne zdrojaky (aktualne pouzivame directfb 1.4.17) z [[http://directfb.org/downloads/Core/DirectFB-1.4/DirectFB-1.4.17.tar.gz|directfb.org]] Nainstalovat niektore libky ako: libjpeg-dev, libfreetype6-dev, pkg-config, libpng12-dev, lib32z1-dev **Pre Kubunut 16_4 64 bit LTS:** \\ Je pri instalacii potrebne ku kazdemu baliku pridavat suffix '**:i386**', ktory vynuti nainstalovanie 32 bitnovych verzii kniznic apt-get install libjpeg-dev:i386 apt-get install libfreetype6-dev:i386 apt-get install pkg-config:i386 apt-get install libpng12-dev:i386 apt-get install lib32z1-dev -- tu mozno bude treba "sudo apt-get -o Dpkg::Options::="--force-overwrite" install zlib1g-dev:i386" kym neopravia bug ======= Manualna kompilacia pre platformu 386 ======= Zdrojove subory pre verziu 1.4.16 sa nachadzaju na servri phoenix: /usr/local/emtest/DevelInstall/directfb skopirovat do /opt/devel/ Rozbalit a nakonfigurovat a nainstalovat cez: ./configure --prefix=/usr/ make sudo make install **Pre Kubuntu 16.04 LTS 64bit:** ./configure --prefix=/usr/ --with-sysroot=/usr/lib/i386-linux-gnu CFLAGS='-m32' CXXFLAGS='-m32' LDFLAGS='-m32 -L/usr/lib/i386-linux-gnu/' --enable-png=yes --enable-jpeg=yes LIBPNG_LIBS=-lpng12 Pocas kompilacie to skonci chybou pri subore mkdgifft.o. Je potrebne v korenovom priecinku v /tools upravit MAKEFILE a doplnit pre CXXFLAGS parameter -m32. Dokompilovat zdrojaky v priecinku tools prikazom 'make clean && make'. Nasledne sa vratit o uroven vyssie a pokracovat prikazom 'make'. CXXFLAGS = -g -O2 -m32 Po uspesnej kompilacii nasymlinkovat priecinok z /usr/lib/directfb-1.4-6 do /usr/lib/i386-linux-gnu/usr/lib/ pretoze pri configure bol nastaveny sysroot pre 32bit: ln -s /usr/lib/directfb-1.4-6 /usr/lib/i386-linux-gnu/ ====== Konfiguracia directfb pre platformu 386 ====== * V home/ adresari vytvorit a naeditovat subor ~/.directfbrc (system=x11, mouse podla typu pouzitej mysi (mouse napr. z Xorgu)) system=x11 mouse-protocol=MouseSystems no-cursor mode=600x800-60 * Pridat sa do skupin tty a video sudo addgroup tty sudo addgroup video * Po odhlaseni a prihlaseni, vyskusat spustit test. aplikaciu napr. dfbmaster * Vyskusat citacku, s upravenym HwConfig.xml: ======= Manualna kompilacia pre platformu ARM verzie emtest_xscale* ======= ** Pozor na prefix !!! treba upravit podla nastavenia na strojceku ** * **1.4.16** - Prvotna konfiguracia, uz sa nepozuiva, pozri verziu 1.4.17. ./configure --prefix=/home/sipikal/DFB --with-inputdrivers=tslib --with-gfxdrivers=none --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS=-lm TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" * **1.4.16** - Chybalo definovanie gcc ./configure --with-gfxdrivers=none --prefix=/opt/emtest/var/DFB/ --with-inputdrivers=tslib --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS="-lm -lpng -lfreetype" LIBPNG_LIBS=-L/usr/toolchain-arm-26/usr/lib LIBPNG_CFLAGS=-I/usr/toolchain-arm-26/usr/include TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12 -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" CPPFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12" FREETYPE_LIBS=-L/usr/toolchain-arm-26/usr/lib FREETYPE_CFLAGS=-I/usr/toolchain-arm-26/usr/include * **1.4.17** ./configure --with-gfxdrivers=none --prefix=/opt/emtest/var/DFB/ --with-inputdrivers=tslib --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS="-lm -lpthread -lpng" LIBPNG_LIBS=-L/usr/toolchain-arm-26/usr/lib LIBPNG_CFLAGS=-I/usr/toolchain-arm-26/usr/include TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-L/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/lib -I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12 -I/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/include/c++/4.2.1 -I/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/include/c++/4.2.1/arm-linux-uclibcgnueabi -I/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/include/c++/4.2.1/arm-linux-uclibcgnueabi/list -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" CXXFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12" FREETYPE_LIBS=-L/usr/toolchain-arm-26/usr/lib FREETYPE_CFLAGS=-I/usr/toolchain-arm-26/usr/include --without-tools --enable-devmem=no CC=/usr/toolchain-arm-26/usr/bin/arm-linux-uclibcgnueabi-gcc --disable-video4linux CXX=/usr/toolchain-arm-26/usr/bin/arm-linux-g++ --enable-x11=no --enable-x11vdpau=no --enable-shared=yes * **1.6.3 DirectFB** - Na emtest_xscale a emtest_xscale_26 platformy nie je mozne skompilovat, pretoze je zavislost na novsiu libc ./configure --with-gfxdrivers=none --prefix=/opt/emtest/var/DFB/ --with-inputdrivers=tslib --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS="-lm -lpng -lfreetype" LIBPNG_LIBS=-L/usr/toolchain-arm-26/usr/lib LIBPNG_CFLAGS=-I/usr/toolchain-arm-26/usr/include TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-L/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/lib -I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12 -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" CPPFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12" FREETYPE_LIBS=-L/usr/toolchain-arm-26/usr/lib FREETYPE_CFLAGS=-I/usr/toolchain-arm-26/usr/include --without-tools * **1.7.7 - Na mikroelektronika imx53 citacku** Stiahnut je to mozne z: wget http://sources.webos-ports.org/downloads/DirectFB-1.7.7.tar.gz Configure prikaz: ./configure $CROSS_BUILD --with-inputdrivers=linuxinput,tslib --with-gfxdrivers=none Je potrebne vykonat patch: system.c - Funkciu direct_trap: - Je potrebne definovat 'sigval_t' ako 'union sigval' -- sigval_t ++ union sigval mutex.h - odstranit: #define DIRECT_RECURSIVE_MUTEX_INITIALIZER(name) { PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP } trace.h - nahradit: -- static DirectMutex buffers_lock = DIRECT_RECURSIVE_MUTEX_INITIALIZER(buffers_lock); ++ 'static DirectMutex buffers_lock = DIRECT_MUTEX_INITIALIZER(buffers_lock);' directfb.c - vykonat sofistikovanjsi patch: Za funkciu DirectFBSetOption pridat: ++static pthread_once_t lock_init_once = PTHREAD_ONCE_INIT; ++static DirectMutex lock; ++ ++static void lock_init(void) ++{ ++ direct_recursive_mutex_init(&lock); ++} A nasledne v DirectFBCreate: -- 'static DirectMutex lock = DIRECT_RECURSIVE_MUTEX_INITIALIZER(lock);' ++ 'pthread_once(&lock_init_once, lock_init);' ======= Mikroelektronika citacka - uprava systemu ======= do suboru /etc/fb.modes pridat: mode "320x240-59" # D: 6.500 MHz, H: 15.046 kHz, V: 59.472 Hz geometry 320 240 320 720 16 timings 153846 56 24 3 6 32 4 vsync high rgba 5/11,6/5,5/0,0/0 endmode ====== Struktura a pozadovane moduly pre ARM architekturu ====== Do aplikacie sa linkuju a nasledne sa davaju do instalacneho balika kniznice 'libdirefb*', 'libfusion*', 'libdirect*' + su potrebne include path-y Boldom su znazornene priecinky \\ Kurzivou vyzadovane moduly **Moduly a suborova struktura:** * Nazov directfb + verzia, aktualne **directfb-1.4.17** * **inputdrivers** - //libdirectfb_tslib.so// - driver pre podporu touch screen-u * **systems** - //libdirectfb_fbdev.so// - //libdirectfb_dummy.so// * **interfaces** * **ICoreResourceManager** - //libicoreresourcemanager_test.so// * **IDirectFBFont** - //libidirectfbfont_dgiff.so// - //libidirectfbfont_ft2.so// * **IDirectFBImageProvider** - //libidirectfbimageprovider_dfiff.so// - //libidirectfbimageprovider_gif.so// - //libidirectfbimageprovider_jpeg.so// - //libidirectfbimageprovider_png.so// * **IDirectFBVideoProvider** - //libidirectfbvideoprovider_gif.so// * **wm** - //libdirectfbwm_default.so// ======= Co robit ak postup nefunguje ? ======= * Ak zavretie aplikacie, proces Xorg vytazi procesor na 100 % ? Je potrebne pouzit iny graficky driver grafickej karty. * Ak chyba po vykonani skriptu 'configure' libpng, libjpeg pozri bod 1, Stiahnutie a instalacia zavislosti * Ak dfbmaster pouziva inu verziu DirectFB ako projekt v Qt Creatore (pouzita verzia sa vypise na konzolu po spusteni) - je potrebne odinstalovat starsiu verziu DirectFB sudo apt-get purge libdirectfb-dev && sudo apt-get autoremove