LINUX.ORG.RU

Не собирается ogle 0.9.2 под slackware 10.1


0

0

Симптомы:

checking for mlib_VideoDCT8x8_S16_S16 in -lmlib... no
checking for a52_free in -la52... no
checking for a52_init in -la52... no
configure: error: Need liba52, install a52dec or specify it's location

a52dec-0.7.3.tar.gz собран (0.7.4 уже пробовал, та же фигня), a52dec запускается, но говорит:

a52dec-0.7.3 - by Michel Lespinasse <walken@zoy.org> and Aaron Holtzman
No accelerated IMDCT transform found

Насчёт "No accelerated IMDCT transform found" - нашёл в гугле совет поставить djbfft-0.76.tar.bz2. Собрал, поставил (как рекомендовалось, в /usr/local, а не в /usr/local/djbfft). Но с ним не собирается a52:

$./configure --enable-djbfft
...
$make
/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/bin /ld: cannot find -ldjbfft
collect2: ld returned 1 exit status
make[1]: *** [a52dec] Error 1
make[1]: Leaving directory `/tmp/a52dec-0.7.4/src'
make: *** [all-recursive] Error 1

Я понимаю, что ogle давно дохл и пованивает, но на 9.1 он у меня собирался без проблем...

anonymous

в /etc/ld.so.conf пропиши путь к либам djbfft (каталог, в котором у тебя есть libdjbfft.so или что-то подобное) и скажи ldconfig тогда a52 должен собраться.

но проблема наверное не в этом. посмотри config.log (или что-то такое) после configure ogle. там должно быть подробно прописано почему не нашлась a52. скорее всего корявый /etc/ld.so.conf

jackLucas
()
Ответ на: комментарий от jackLucas

> в /etc/ld.so.conf пропиши путь к либам djbfft (каталог, в
котором у тебя есть libdjbfft.so или что-то подобное) и скажи
ldconfig тогда a52 должен собраться.

bash-3.00$ cat ld.so.conf
/usr/local/lib
/usr/X11R6/lib
/usr/i486-slackware-linux/lib
/opt/kde/lib
/usr/lib/qt/lib

djbfft стоит в /usr/local/bin. Поставил он мне вот что:
usr/local/lib/djbfft.a
usr/local/include/real4.h
usr/local/include/real8.h
usr/local/include/complex4.h
usr/local/include/complex8.h
usr/local/include/fftc4.h
usr/local/include/fftc8.h
usr/local/include/fftr4.h
usr/local/include/fftr8.h
usr/local/include/fftfreq.h

Что-то нет никаких so... При сборке тоже не ругался... Да и
не должно быть, судя по http://cr.yp.to/djbfft/install.html .

ldconfig много раз говорил, не помогает.

> но проблема наверное не в этом. посмотри config.log (или
что-то такое) после configure ogle. там должно быть подробно
прописано почему не нашлась a52. скорее всего корявый
/etc/ld.so.conf

Я в этом деле не очень смыслю. Вот что, судя по всему,
относится к данной ошибке из config.log:

configure:12055: checking for mlib_VideoDCT8x8_S16_S16 in -lmlib
configure:12088: gcc -o conftest -O2 -march=i486 -mcpu=i686 -L/opt/SUNWmlib/lib -O2 -march=i486 -mcpu=i686 conftest.c -lmlib -lrt >&5
/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/bin /ld: cannot find -lmlib
collect2: ld returned 1 exit status
configure:12091: $? = 1
configure: failed program was:
#line 12062 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char mlib_VideoDCT8x8_S16_S16 ();
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
# endif
int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
mlib_VideoDCT8x8_S16_S16 ();
;
return 0;
}
configure:12108: result: no
configure:12294: checking for a52_free in -la52
configure:12327: gcc -o conftest -L/usr/local/lib -O2 -march=i486 -mcpu=i686 conftest.c -la52 -L/usr/local/lib -lm -lrt >&5
/tmp/ccGpkNoe.o(.text+0xa): In function `main':
: undefined reference to `a52_free'
collect2: ld returned 1 exit status
configure:12330: $? = 1
configure: failed program was:
#line 12301 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char a52_free ();
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
# endif
int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
a52_free ();
;
return 0;
}
configure:12347: result: no
configure:12425: checking for a52_init in -la52
configure:12458: gcc -o conftest -L/usr/local/lib -O2 -march=i486 -mcpu=i686 conftest.c -la52 -L/usr/local/lib -lm -lrt >&5
/tmp/cckGsHgs.o(.text+0xa): In function `main':
: undefined reference to `a52_init'
collect2: ld returned 1 exit status
configure:12461: $? = 1
configure: failed program was:
#line 12432 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char a52_init ();
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
# endif
int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
a52_init ();
;
return 0;
}
configure:12478: result: no
configure:12486: error: Need liba52, install a52dec or specify it's location

anonymous
()
Ответ на: комментарий от jackLucas

> в /etc/ld.so.conf пропиши путь к либам djbfft (каталог, в
котором у тебя есть libdjbfft.so или что-то подобное) и скажи
ldconfig тогда a52 должен собраться.

bash-3.00$ cat ld.so.conf 
/usr/local/lib
/usr/X11R6/lib
/usr/i486-slackware-linux/lib
/opt/kde/lib
/usr/lib/qt/lib

djbfft стоит в /usr/local/bin. Поставил он мне вот что:
usr/local/lib/djbfft.a
usr/local/include/real4.h
usr/local/include/real8.h
usr/local/include/complex4.h
usr/local/include/complex8.h
usr/local/include/fftc4.h
usr/local/include/fftc8.h
usr/local/include/fftr4.h
usr/local/include/fftr8.h
usr/local/include/fftfreq.h

Что-то нет никаких so... При сборке тоже не ругался... Да и
не должно быть, судя по http://cr.yp.to/djbfft/install.html .

ldconfig много раз говорил, не помогает.

> но проблема наверное не в этом. посмотри config.log (или
что-то такое) после configure ogle. там должно быть подробно
прописано почему не нашлась a52. скорее всего корявый
/etc/ld.so.conf

Я в этом деле не очень смыслю. Вот что, судя по всему,
относится к данной ошибке из config.log:

configure:12055: checking for mlib_VideoDCT8x8_S16_S16 in -lmlib
configure:12088: gcc -o conftest -O2 -march=i486 -mcpu=i686 -L/opt/SUNWmlib/lib -O2 -march=i486 -mcpu=i686  conftest.c -lmlib   -lrt >&5
/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/bin
/ld: cannot find -lmlib
collect2: ld returned 1 exit status
configure:12091: $? = 1
configure: failed program was:
#line 12062 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char mlib_VideoDCT8x8_S16_S16 ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
mlib_VideoDCT8x8_S16_S16 ();
  ;
  return 0;
}
configure:12108: result: no
configure:12294: checking for a52_free in -la52
configure:12327: gcc -o conftest -L/usr/local/lib -O2 -march=i486 -mcpu=i686  conftest.c -la52 -L/usr/local/lib -lm  -lrt >&5
/tmp/ccGpkNoe.o(.text+0xa): In function `main':
: undefined reference to `a52_free'
collect2: ld returned 1 exit status
configure:12330: $? = 1
configure: failed program was:
#line 12301 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char a52_free ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
a52_free ();
  ;
  return 0;
}
configure:12347: result: no
configure:12425: checking for a52_init in -la52
configure:12458: gcc -o conftest -L/usr/local/lib -O2 -march=i486 -mcpu=i686  conftest.c -la52 -L/usr/local/lib -lm  -lrt >&5
/tmp/cckGsHgs.o(.text+0xa): In function `main':
: undefined reference to `a52_init'
collect2: ld returned 1 exit status
configure:12461: $? = 1
configure: failed program was:
#line 12432 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char a52_init ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
a52_init ();
  ;
  return 0;
}
configure:12478: result: no
configure:12486: error: Need liba52, install a52dec or specify it's location

anonymous
()
Ответ на: комментарий от anonymous

ну config.log ругается на mlib

ищи где у тебя libmlib.so* или libmlib.a

хотя что это за либ такой, что-то не знаю

а понял, с a52 на самом деле косяк

что выдаст команда

nm -D -A /usr/lib/lib*.so* | grep a52_init

nm -D -A /usr/local/lib/lib*.so* | grep a52_init

nm -A /usr/lib/lib*.a | grep a52_init

nm -A /usr/local/lib/lib*.a | grep a52_init

если символ найдётся в какой-нибудь .a, посмотри configure --help от a52 на предмет --enable-shared

это же глянь в configure --help для djbfft

если --enable-shared есть, то попробуй сконфигурить с этой опцией, потом скомпилить

jackLucas
()
Ответ на: комментарий от anonymous

Кстати, а можно ли вообще делать strip устанавливаемым библиотекам? Или это от чего-то зависит?

anonymous
()
Ответ на: комментарий от anonymous

смотря как стрипать

если ремув аннидид - то для библиотек это убийство

если ремув дебаг - то для .so'шников должно быть нормально. а про static либы не знаю (про ремув дебаг не знаю, аннидид точно делать не надо :) ).

jackLucas
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.