KDE2, Qt & -fno-exceptions

Lubos Lunak l.lunak na sh.cvut.cz
Středa Říjen 25 02:41:20 CEST 2000


 Zdravim,

 pokud to nahodou jeste nekdo nevi, tak je venku KDE2.0 final . A
protoze jsem se na jedne newsgroupe trosku rozepsal, mozna by to mohlo
zajimat lidi i tady, jak docela slusne snizit pametove naroky KDE2.
 Konkretne se jedna o to, ze je docela dobry napad pouzivat Qt prelozene
bez podpory pro vyjimky. C++ knihovna s vyjimkami diky tomu, jak je to
blbe implementovano v gcc-2.x, pridava kazde bezici aplikaci docela dost
na pametove spotrebe ( t.j. neni to sdilene ), jestli dobre chapu ta
cislicka v top, tak je to 1-2MB pro kazdou Qt aplikaci, coz je docela
sila. Pouzit Qt bez podpory pro vyjimky by nemelo nicemu vadit, me to
tak v pohode jede, jenze asi zadna binarka na netu tak neni prelozena.
 To, jestli je Qt prelozeno s vyjimkami nebo bez se pozna pomoci
objdump, v adresari s libqt se da 'objdump --headers libqt.so' a nekde
na konci by mely byt dve polozky nazvane 'eh_frame' a
'gcc_except_table'. Pokud tam ta osmimistna hexa cisla hned za nimi jsou
vetsi nez rekneme 00001000, tak je to verze s vyjimkami ( neboli ta
zbytecne velka ).
 Naprava se provede asi takhle :
   - Nekam se rozbali zdrojaky qt-2.2.1 ( treba z ftp://ftp.troll.no ),
vleze se do toho adresare a da se :
     export QTDIR=`pwd`
     ./configure -gif -system-jpeg -sm   ( tyhle 3 prepinace by mely
stacit )
     make SYSCONF_CXXFLAGS='-O2 -pipe -fno-exceptions' sub-src
   - az to skonci, tak v adresari lib by melo byt soubor libqt.so.2.2.1
, tak ten se zkratka vezme a nalogovany jako root se nim preplacne ten
originalni, ktery je nejspis v /usr/lib/qt2/lib nebo tak nekde. Pak
jeste :
     ldconfig
     a melo by to byt v pohode.
 Lide s Mandrake mohou zkusit ftp://seli.sh.cvut.cz/pub/libqt.so.2.2.1,
prelozeno na mdk7.1 .
 Samotne KDE uz obsahuje tehle fint na snizeni efektu ne nejlepsi
implementace nekterych C++ veci nekolik vcetne tehle -fno-exceptions kde
je to mozne, takze tam nic takoveho neni treba.

 Enjoy

 Lubos Lunak
 l.lunak na email.cz http://dforce.sh.cvut.cz/~seli


Další informace o konferenci Linux