Stiahnut vhodne zdrojaky (aktualne pouzivame directfb 1.4.17) z 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
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/
system=x11 mouse-protocol=MouseSystems no-cursor mode=600x800-60
sudo addgroup <user> tty sudo addgroup <user> video
<Device Name="UI" ID="0" Enable="1" Type="DirectFB" />
Pozor na prefix !!! treba upravit podla nastavenia na strojceku
./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"
./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
./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
./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
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);'
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
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:
Je potrebne pouzit iny graficky driver grafickej karty.
pozri bod 1, Stiahnutie a instalacia zavislosti
sudo apt-get purge libdirectfb-dev && sudo apt-get autoremove