Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > установка xs модуля


Автор: gcc 3.11.2009, 06:17
хотел поставить модуль http://search.cpan.org/dist/FFmpeg/FFmpeg.pm

==

подскажите где должны быть эти файлы avformat.h: No such file or directory  swscale.h: No such file or directory


в нем написано 
Код

PREREQUISITES
=============

Library        Language               Recommended way to get it
===========================================================================
Image::PBMlib         Perl            CPAN - http://search.cpan.org
ImageMagick           C               RPM  - ImageMagick, ImageMagick-devel
ImageMagick           Perl            RPM  - ImageMagick-perl
ImageMagick::Iterator Perl            CPAN - http://search.cpan.org
JPEG                  C               RPM  - libjpeg, libjpeg-devel
Lame                  C               RPM  - liblame, liblame-devel
Ogg Vorbis            C               RPM  - libvorbis, libvorbis-devel,
                                             libogg, libogg-devel
Faad2                 C               RPM  - faad2, faad2-devel
Faac                  C               RPM  - faac, faac-devel
A52dec                C               RPM  - a52dec


но не получается поставить lame его просто нету на FreeBSD

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

или нужно плано все завивисомсти постаивть? (но не поулчается, старые библиоткеки которых нету)

например: http://www.freebsd.org/cgi/ports.cgi?query=liblame&stype=all&sektion=all





Код

cc -c  -I. -I/usr/include/ffmpeg -I/usr/include/ffmpeg/libavutil -I/usr/include/ffmpeg/libavcodec -I/usr/include/ffmpeg/libavformat
  -DAPPLLIB_EXP="/usr/local/lib/perl5/5.8.9/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing -pipe 
-I/usr/local/include -pipe -ffast-math -funit-at-a-time -fpeel-loops -ftracer -funswitch-loops -mmmx -msse -msse2 -march=pentium4 -mtune=pentium4 
-march=pentium4 -g   -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc 
-DVERSION=\"6036\"  -DXS_VERSION=\"6036\" -DPIC -fPIC "-I/usr/local/lib/perl5/5.8.9/mach/CORE"  -O FFmpeg.c

In file included from ffmpeg.h:2,

                 from FFmpeg.xs:16:

/usr/local/include/libavutil/avutil.h:52,

/usr/local/include/libavcodec/avcodec.h:30,

./ffmpeg-6036.c:21:22: error: avformat.h: No such file or directory
./ffmpeg-6036.c:22:21: error: swscale.h: No such file or directory
./ffmpeg-6036.c:23:23: error: framehook.h: No such file or directory
./ffmpeg-6036.c:24:21: error: dsputil.h: No such file or directory
./ffmpeg-6036.c:25:17: error: opt.h: No such file or directory
./ffmpeg-6036.c:44:21: error: version.h: No such file or directory
./ffmpeg-6036.c:45:22: error: cmdutils.h: No such file or directory
In file included from ffmpeg.h:2,
                 from FFmpeg.xs:16:
./ffmpeg-6036.c:68: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'options'
./ffmpeg-6036.c:76: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
./ffmpeg-6036.c:80: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token



при 
Код

perl Makefile.PL
make install clean


кстате, после perl Makefile.PL

Код

Note (probably harmless): No library found for -ldl
Note (probably harmless): No library found for -lmp3lame
Writing Makefile for FFmpeg



Добавлено через 2 минуты и 46 секунд
или подскажите как можно поменять зависимости этого xs модуля ?

Код

./configure \
  --prefix=/usr \
  --enable-shared \
  --enable-mp3lame \
  --enable-libogg \
  --enable-vorbis \
  --enable-faad \
  --enable-faac \
  --enable-a52 \
  --enable-pthreads \
  --enable-pp \
  --enable-amr_nb \
  --enable-amr_nb-fixed \
  --enable-amr_wb \
  --enable-amr_if2 \
  --enable-gpl



в README:

Код

BUILD FFMPEG
============
   
FFmpeg is under active development.  This library was developed and.
tested on the FFmpeg SVN HEAD tag as of June 10, 2006, or version 5704.
   
Download and install the SVN version of FFmpeg.  The installation must
be configured with shared library support so libavformat and libavcodec
can be dynamically linked.  Make sure the install path of the shared
libraries is in the dynamic link path.  On a Linux system, this means
locating the libavformat.so and libavcodec.so files, and making sure
their path is specified in ld.so.conf.  Be sure to run "ldconfig"
*twice* after editing /etc/ld.so.conf.

Now you're ready to build the FFmpeg-C library.  I test against an
FFmpeg configured and installed like this (note that I have installed
the optional AMR patches, see ./configure --help for details):

./configure \
  --prefix=/usr \
  --enable-shared \
  --enable-mp3lame \
  --enable-libogg \
  --enable-vorbis \
  --enable-faad \
  --enable-faac \
  --enable-a52 \
  --enable-pthreads \
  --enable-pp \
  --enable-amr_nb \
  --enable-amr_nb-fixed \
  --enable-amr_wb \
  --enable-amr_if2 \
  --enable-gpl ;

Then:

% make && make install ; ldconfig ; ldconfig



Автор: krypt3r 3.11.2009, 06:51
Логично предположить, то для установки пакета требуется наличие установленного ffmpeg

Автор: gcc 3.11.2009, 07:22
спасибо, он стоит!

только там видимо замисимости были выбраны другие, lame там не было

сейчас переставляю - там геморой, мелкие пакеты надо качать руками... потмо зависимсоти ругаються....

Добавлено @ 07:23
а что такое dl?

Код

Note (probably harmless): No library found for -ldl


Автор: krypt3r 3.11.2009, 07:31
libdl.so из пакета glibc-devel. Как он называется под фри, не знаю.
Код

# find / -name "libdl*" -print

И еще он у вас не lame ищет, а mp3lame ) Что показывает поиск в дереве портов?

Автор: gcc 3.11.2009, 17:32
я поставил lame 

и оно перестало искать mp3lame

===

glibc-devel - такого модуля нету http://www.freebsd.org/cgi/ports.cgi?query=glibc-devel&stype=all&sektion=all

что это за моудуль ldl?

Добавлено через 56 секунд
ЗЫ: порты коллекция портов стоят корректно!!
ЗЫЫ:  glibc стоит

Автор: krypt3r 3.11.2009, 20:16
Код

Note (probably harmless): No library found for -ldl

Он ищет библиотеку libdl.so

Автор: gcc 3.11.2009, 21:38
я нашел, это старая бибдлиотека

сейчас dlopen() на фре находится внутри libc, коя линкуется по дефолту динамически через rtld

попробую проигнорировать

Добавлено через 5 минут и 49 секунд
он пишет опят ьчто не может найти эти файлы

Код

./ffmpeg-6036.c:21:22: error: avformat.h: No such file or directory
./ffmpeg-6036.c:22:21: error: swscale.h: No such file or directory
./ffmpeg-6036.c:23:23: error: framehook.h: No such file or directory
./ffmpeg-6036.c:24:21: error: dsputil.h: No such file or directory
./ffmpeg-6036.c:25:17: error: opt.h: No such file or directory
./ffmpeg-6036.c:44:21: error: version.h: No such file or directory
./ffmpeg-6036.c:45:22: error: cmdutils.h: No such file or directory


он по-моему ищет их в /usr/include, а надо в /usr/local/include

модуль надо переписать не много... makefile

Добавлено через 12 минут и 12 секунд
пересобрал я ffmpeg со всем чем можно, с тем тчо можно было поставить в портах


поменял /usr/local/include

но файлов опять нету...

Код

make install
cc -c  -I. -I/usr/local/include/ffmpeg -I/usr/local/include/ffmpeg/libavutil -I/usr/local/include/ffmpeg/libavcodec -I/usr/local/include/ffmpeg/libavformat  
-DAPPLLIB_EXP="/usr/local/lib/perl5/5.8.9/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local
/include -pipe -ffast-math -funit-at-a-time -fpeel-loops -ftracer -funswitch-loops -mmmx -msse -msse2 -march=pentium4 -mtune=pentium4 
-march=pentium4 -g   -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc 
-DVERSION=\"6036\"  -DXS_VERSION=\"6036\" -DPIC -fPIC "-I/usr/local/lib/perl5/5.8.9/mach/CORE"  -O FFmpeg.c

In file included from /usr/local/include/libavutil/avutil.h:52,
                 from /usr/local/include/libavcodec/avcodec.h:30,
                 from /usr/local/include/ffmpeg/avformat.h:40,
                 from ./ffmpeg-6036.c:21,
                 from ffmpeg.h:2,
                 from FFmpeg.xs:16:
/usr/local/include/libavutil/common.h:85:26: error: internal.h: No such file or directory
In file included from ffmpeg.h:2,
                 from FFmpeg.xs:16:
./ffmpeg-6036.c:23:23: error: framehook.h: No such file or directory
./ffmpeg-6036.c:24:21: error: dsputil.h: No such file or directory
./ffmpeg-6036.c:44:21: error: version.h: No such file or directory
./ffmpeg-6036.c:45:22: error: cmdutils.h: No such file or directory
In file included from ffmpeg.h:2,
                 from FFmpeg.xs:16:



я так понял что нормально не поставить....


Автор: krypt3r 4.11.2009, 00:48
Цитата

он по-моему ищет их в /usr/include, а надо в /usr/local/include

Можно просто скопировать либо кинуть симлинк либо править makefile либо скормить компилятору CFLAGS, CPPFLAGS и LDFLAGS.

ЗЫ. Интересно стало. Попробую завтра на своей фре собрать (6.0)

Автор: sir_nuf_nuf 4.11.2009, 20:12
gcc, а зачем вам втягивать это все в perl ?
насколько я помню - вы хотели пережимать видео?

Поставьте какой-нть хороший кодер в виде отдельной программы, и вызывайте ее из perl. Делов то.

Автор: gcc 5.11.2009, 15:10
sir_nuf_nuf, я сделал именно так

просто хотел на хостинг поставить, у меня есть безлимитный с большим местом на диске, может будет работать

а ее можно поставить на хостинг ffmpeg? если будет в xs или не в xs, то оно все равно будет требовать библиотеки /usr/local/lib ?

я еще попробую на linux собрать это, там только не написано версии библиотек

Автор: gcc 26.11.2009, 07:43
не было времени, еще не сомтрел на linux


====

вопрос другой: как это /usr/ports/multimedia/ffmpeg скопировать на хостинг, чтобы оно там работало? можно ли это сделать?


нужно забиндить библиотеки .so в ~/lib ?
можно ли сделать чтобы прогамма смотрела библиотеки не в /usr/local/lib в другом каталоге?
или можно ли сделать чтобы прогармма искала .so в /usr/local/lib а если там нету, то в другой, например в /home/user/lib ?

и например как узнать какие ей трубуються все .so для работы?

Автор: sir_nuf_nuf 26.11.2009, 17:21
Цитата(gcc @  26.11.2009,  07:43 Найти цитируемый пост)
/usr/ports/multimedia/ffmpeg

это порт FreeBSD. На линукс не переносится.

Установите родной пакет ffmpeg для линукса.

Автор: gcc 26.11.2009, 17:44
sir_nuf_nuf, на хостинге я как этот пакет поставлю? 

Автор: sir_nuf_nuf 26.11.2009, 23:46
Цитата(gcc @  26.11.2009,  17:44 Найти цитируемый пост)
sir_nuf_nuf, на хостинге я как этот пакет поставлю?  

А как каталист поставили ? 

Общая метода такова: 
1) скачиваем архив с программой
2) собираем ее руками
3) делаем make install PREFIX=/home/you_dir/ffmpg

И она встанет в вашу домашнюю директорию.

Автор: gcc 27.11.2009, 07:20
sir_nuf_nuf, ffmpeg - это не перловый пакет

на хостинге FreeBSD

то есть нужно все зависимости к ffmpeg поставить так же make install PREFIX=/home/you_dir/ffmpg

ок понял

Автор: sir_nuf_nuf 27.11.2009, 08:42
Цитата(gcc @  27.11.2009,  07:20 Найти цитируемый пост)
sir_nuf_nuf, ffmpeg - это не перловый пакет

ага, да. 

Цитата(gcc @  27.11.2009,  07:20 Найти цитируемый пост)
на хостинге FreeBSD

ну тогда точно make install PREFIX=/bla должно работать.
хотя тоже самое должно работать не только с портами но и сбольшинством пакетов.

после того как все поставили вам по идее нужно добавить в переменные окружения:

Код

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/your_home/ffmpg/lib"
PATH="$PATH:/home/your_home/ffmpg/lib"


т.е. пути для бинарников и либ..


П.С. если заработает - отпишитесь - интересно =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)