DLL-hell a la Linux

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Аватара пользователя
Cyril
Сообщения: 40
ОС: Разные...

DLL-hell a la Linux

Сообщение Cyril »

Всем привет!

Устроил тут себе развлечение - пересобрал кучу пакетов ручками. Соответственно, все библиотеки уехали из /usr/lib в /usr/local/lib. Ну ладно, чёрт с ними - с библиотеками; всё работает нормально. Но вот есть проблема с файлами .la, уехавшими туда же. Они при линковке libtool'ом не находятся. Ж:-\
Временно решаю проблему symlink'ами - но это не дело, надо нормально сделать. Внимание, вопрос - как? Я пока не нашёл такой информации...
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: DLL-hell a la Linux

Сообщение sash-kan »

ну так пересоберите еще раз с указанием нужного prefix-а.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Michael
Сообщения: 92

Re: DLL-hell a la Linux

Сообщение Michael »

Странно это. Попробуй export LDFLAGS=-L/usr/local/lib перед тем, как configure делаешь.
Спасибо сказали:
Аватара пользователя
nonstop
Сообщения: 132
ОС: Slackware

Re: DLL-hell a la Linux

Сообщение nonstop »

добавь

Код: Выделить всё

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

например в .bash_profile
slackware - linux for human brains
Спасибо сказали:
Аватара пользователя
Cyril
Сообщения: 40
ОС: Разные...

Re: DLL-hell a la Linux

Сообщение Cyril »

sash-kan писал(а):
09.01.2008 03:32
ну так пересоберите еще раз с указанием нужного prefix-а.


А смысл? Префикс у них идеологически правильный и идейно выдержанный - проблема не в этом, а в том, что система разные части библиотеки ищет по разным префиксам.

Michael писал(а):
09.01.2008 03:43
Странно это. Попробуй export LDFLAGS=-L/usr/local/lib перед тем, как configure делаешь.


Ну вообще-то у меня в ld.so.conf это прописано - или я не совсем верно понимаю смысл LDFLAGS?

nonstop писал(а):
09.01.2008 08:58
добавь

Код: Выделить всё

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

например в .bash_profile


Увы - см. ответ выше. Плюс пробовал так делать - безрезультатно; возникает ощущение, что libtool тупо читает абсолютные пути в .la-файлах собираемых библиотек и больше никуда не смотрит, хотя это бред....

Туман пока не рассеялся. Ж:-\
Спасибо сказали:
Michael
Сообщения: 92

Re: DLL-hell a la Linux

Сообщение Michael »

Cyril писал(а):
09.01.2008 10:27
Ну вообще-то у меня в ld.so.conf это прописано - или я не совсем верно понимаю смысл LDFLAGS?

В ld.so.conf прописываются пути, где искать библиотеки во время выполнения, а в LDFLAGS - опции, которые configure и make передают линковщику.

Cyril писал(а):
09.01.2008 10:27
Увы - см. ответ выше. Плюс пробовал так делать - безрезультатно; возникает ощущение, что libtool тупо читает абсолютные пути в .la-файлах собираемых библиотек и больше никуда не смотрит, хотя это бред....

Покажи, как оно матерится.
Спасибо сказали:
Аватара пользователя
Cyril
Сообщения: 40
ОС: Разные...

Re: DLL-hell a la Linux

Сообщение Cyril »

Michael писал(а):
10.01.2008 04:12
В ld.so.conf прописываются пути, где искать библиотеки во время выполнения, а в LDFLAGS - опции, которые configure и make передают линковщику.


Ага, спасибо - усвоил. Проверю.

Michael писал(а):
10.01.2008 04:12
Покажи, как оно матерится.


Сейчас в лоб не могу - на работе. В принципе, там две строчки - одна про то, что файла нет (видимо, от системы), вторая про то, что файл не является правильным образом (если точно помню - соответственно, от libtool). В обоих файл с префиксом /usr/lib вместо /usr/local/lib.
Спасибо сказали:
Аватара пользователя
cdrw
Сообщения: 249

Re: DLL-hell a la Linux

Сообщение cdrw »

Cyril писал(а):
09.01.2008 03:11
Всем привет!

Устроил тут себе развлечение - пересобрал кучу пакетов ручками. Соответственно, все библиотеки уехали из /usr/lib в /usr/local/lib. Ну ладно, чёрт с ними - с библиотеками; всё работает нормально. Но вот есть проблема с файлами .la, уехавшими туда же. Они при линковке libtool'ом не находятся. Ж:-\
Временно решаю проблему symlink'ами - но это не дело, надо нормально сделать. Внимание, вопрос - как? Я пока не нашёл такой информации...

Для примера, можно хотябы один пакет(сырцы) и его буилд, библиотеки которого "уехали из /usr/lib в /usr/local/lib"?
Спасибо сказали:
Аватара пользователя
Cyril
Сообщения: 40
ОС: Разные...

Re: DLL-hell a la Linux

Сообщение Cyril »

cdrw писал(а):
10.01.2008 14:57
Для примера, можно хотябы один пакет(сырцы) и его буилд, библиотеки которого "уехали из /usr/lib в /usr/local/lib"?


Гмм... GLib (с gnome.org) подойдёт? Ж;-)
К тому же, как я писал, сами библиотеки (.so) меня мало волнуют - с ними проблем нет; проблемы с файлами .la.
Спасибо сказали:
Аватара пользователя
cdrw
Сообщения: 249

Re: DLL-hell a la Linux

Сообщение cdrw »

Cyril писал(а):
10.01.2008 16:32
Гмм... GLib (с gnome.org) подойдёт? Ж;-)
К тому же, как я писал, сами библиотеки (.so) меня мало волнуют - с ними проблем нет; проблемы с файлами .la.

Hotelos by build posmotret', no seitschas ja ughe na rabote. Winda, kak nazlo gliuchit.
V confige nichego ne nashol, no est' navodiash'aja ssylka.

P.S.

_ftp://ftp.gnome.org/pub/gnome/sources/glib/2.15/glib-2.15.1.tar.bz2
Откомпилировал этот пакет, использовал буилд от Slackware - никаких проблем.

Код: Выделить всё

CWD=`pwd`
TMP=/tmp
PKG=$TMP/package-glib2
rm -rf $PKG
mkdir -p $PKG/usr

VERSION=2.15.1
ARCH=${ARCH:-i486}
BUILD=1

if [ "$ARCH" = "i386" ]; then
  SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2"
fi

cd $TMP
rm -rf glib-$VERSION
tar xjvf $CWD/glib-$VERSION.tar.bz2 || exit 1
cd glib-$VERSION
chown -R root:root .
find . -perm 664 -exec chmod 644 {} \;
CFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --sysconfdir=/etc \
  --mandir=/usr/man \
  --build=$ARCH-slackware-linux
make -j4 || exit 1
make install DESTDIR=$PKG
( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
gzip -9 $PKG/usr/man/man?/*
mkdir -p $PKG/usr/doc/glib-$VERSION
cp -a \
  AUTHORS COPYING NEWS README \
  $PKG/usr/doc/glib-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $TMP/package-glib2
makepkg -l y -c n ../glib2-$VERSION-$ARCH-$BUILD.tgz
Спасибо сказали:
Аватара пользователя
Cyril
Сообщения: 40
ОС: Разные...

Re: DLL-hell a la Linux

Сообщение Cyril »

cdrw писал(а):
10.01.2008 20:23
Откомпилировал этот пакет, использовал буилд от Slackware - никаких проблем.


Я как раз не использовал сборку от Slackware - исходники брал напрямую с gnome.org. Плюс к тому, со сборкой GLib проблем и не было (как я помню) - проблемы начались при сборке пакетов, от него зависящих, которые ищут .la в /usr/lib - в то время, как у меня они (по вполне понятным причинам) в /usr/local/lib.
Спасибо сказали:
Аватара пользователя
cdrw
Сообщения: 249

Re: DLL-hell a la Linux

Сообщение cdrw »

Cyril писал(а):
11.01.2008 14:59
cdrw писал(а):
10.01.2008 20:23
Откомпилировал этот пакет, использовал буилд от Slackware - никаких проблем.


Я как раз не использовал сборку от Slackware - исходники брал напрямую с gnome.org.

Я тоже. См. ссылку.
Спасибо сказали: