SpecTips/kdebuild

Материал из ALT Linux Wiki
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


http://lists.altlinux.ru/pipermail/devel/2005-April/020210.html с появлением в Сизифе kde3.4, программки под kde перестали собираться. симптомы - сборка заканчивается длинной пургой, маленький кусочек которой приведен ниже:

metabar.cpp: undefined reference to `QString::QString(char const*)'
.libs/metabar.o(.text+0x7d0):metabar.cpp: undefined reference to `QString::QString(char const*)'
.libs/metabar.o(.text+0x808):metabar.cpp: undefined reference to `QString::shared_null'
.libs/metabar.o(.text+0x814):metabar.cpp: undefined reference to `QStringData::deleteSelf()'
.libs/metabar.o(.text+0x82e):metabar.cpp: undefined reference to `QString::shared_null'
.libs/metabar.o(.text+0x83a):metabar.cpp: undefined reference to `QStringData::deleteSelf()'
.libs/metabar.o(.text+0x84e):metabar.cpp: undefined reference to `QString::QString(char const*)'
.libs/metabar.o(.text+0x860):metabar.cpp: undefined reference to `QString::QString(char const*)'

комментарий:

> По этому поводу мне что-то Zerg рассказывал, но я не понял, и мне
> эта затея (собирать незамкнутые разделяемые библиотеки) не
> нравится. Zerg, расскажи всем, может тогда станет ясно, что
> делать
Все, что в /usr/lib/kde3 имеет unresolved symbols для оптимизации,
т.к. грузится через lt_dlopen в общее место, где недостающие символы 
беруться из необходимой, загруженной туда же библиотеки.

ldv@, zerg@

лечится все это помещением в %prep следующего текста:

%__subst "s/\(Wl,--no-undefined\)/-Wl,--warn-unresolved-symbols \1/g" admin/acinclude.m4.in                 
%__subst "s/\-lkdeui/-lkdeui -lpthread/g" admin/acinclude.m4.in                                             
%__subst "s/\.la/.so/g" admin/acinclude.m4.in                                                               
make -f admin/Makefile.common cvs ||:

вторая строчка решает проблемы кривого софта, который не линкуется с libpthread и надеется что за него это сделает libtool (который при отсутствии .la этого не сделает), предпоследняя строчка заодно решает проблему с .la

после этого софт нормально собирается и работает.

Ссылки

http://faq.altlinux.ru/index.php?action=single&qid=206&aid=207