LaWars: различия между версиями
м (+категории) |
Нет описания правки |
||
Строка 1: | Строка 1: | ||
[[Category:Devel]] | [[Category:Devel]] | ||
[[категория:Программисту]] | [[категория:Программисту]] | ||
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/LaWars}} | {{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/LaWars}} | ||
Строка 19: | Строка 18: | ||
в каталоге проекта...</pre> | в каталоге проекта...</pre> | ||
// Eugene Ostapets | // Eugene Ostapets | ||
{{Category navigation|title=KDE|category=KDE|sortkey={{SUBPAGENAME}}}} | |||
Если в приложении есть свои библиотеки, то надо аккуратнее пользоваться <tt>grep -ERl '\.la' . |xargs subst 's@\.la@.so@g'</tt>, а именно заменять символы только в Makefile'ах. | Если в приложении есть свои библиотеки, то надо аккуратнее пользоваться <tt>grep -ERl '\.la' . |xargs subst 's@\.la@.so@g'</tt>, а именно заменять символы только в Makefile'ах. | ||
Версия от 15:19, 2 июля 2015
Из FAQ:
Сборка некоторых приложений, как правило, разработанных для KDE, завершается ошибкой "in the prefix, you've chosen, are no KDE libraries installed. This will fail.", хотя пакет kdelibs-devel установлен. Кроме того, могут выводиться сообщения об отсутствии некоторых файлов .la, например, libkdecore.la или libkdefx.la.
Для устранения этой ошибки выполните команду subst 's,\.la\>,.so,' configure либо же subst 's,\.la\>,.so,' admin/acinclude.m4.in Во втором случае необходимо после выполнения команды пересоздать скрипт configure командой make -f admin/Makefile.common
Кроме того, может быть необходимо выполнить аналогичные замены '.la' на '.so' в файлах Makefile.in перед выполнением скрипта configure.
В большинстве случаев помогает: grep -ERl '\.la' . |xargs subst 's@\.la@.so@g' в каталоге проекта...
// Eugene Ostapets
Если в приложении есть свои библиотеки, то надо аккуратнее пользоваться grep -ERl '\.la' . |xargs subst 's@\.la@.so@g', а именно заменять символы только в Makefile'ах.
Просто для .so файлов их зависимости хранятся в самом файле (NEEDED в ELF), а для .a файлов их негде хранить, поэтому приходится всякие -lm и -lsysfs добавлять не к строчке линковки библиотеки, а к строчке линковки исполняемых файлов, линкуемых со статическими библиотеками. Что вы линкуете с libdirectfb_fbdev.a ? Вот туда и надо добавлять. Вообще для этих целей и создавался формат libtool library (.la). В него как раз заносятся все зависимости как для статических, так и для динамических либ. Но в Альте .la не используются, так как все динамикой собирается. Поэтому всем кто собирает статикой приходится закрывать unresolved symbols собственноручно, добавляя нужные -lчто-то там в список того, с чем линкуется исполняемый файл.
damir@