не могу скомпилировать ffmpeg на Solaris 10 sparc

Кто-нибудь скомпилировал ffmpeg 0.6.1 для sparc Solaris 10? Я получаю следующие ошибки:

    uname -a
SunOS SERVERNAME 5.10 Generic_118833-36 sun4u sparc SUNW,Sun-Fire-V440

bwddmadm@bwddmliv>/export/home/USERID/ffmpeg-0.6.1/configure --prefix=/export/home/USERID/ffmpegX --extra-cflags="-fPIC" --disable-mmx --disable-protocol=udp --disable-encoder=nellymoser
Broken shell detected.  Trying alternatives.
Trying shell bash
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
Unknown C compiler gcc
awk: syntax error near line 1
awk: illegal statement near line 1
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
install prefix            /export/home/USERID/ffmpegX
source path               /export/home/USERID/ffmpeg-0.6.1
C compiler                gcc
.align is power-of-two    no
ARCH                      sparc (generic)
big-endian                no
runtime cpu detection     no
VIS enabled               yes
gprof enabled             no
debug symbols             yes
strip symbols             yes
optimizations             yes
static                    yes
shared                    no
postprocessing support    no
new filter support        no
filters using lavformat   no
network support           yes
threading support         no
SDL support               no
Sun medialib support      no
AVISynth enabled          no
libdc1394 support         no
libdirac enabled          no
libfaac enabled           no
libfaad enabled           no
libfaad dlopened          no
libgsm enabled            no
libmp3lame enabled        no
libnut enabled            no
libopencore-amrnb support no
libopencore-amrwb support no
libopenjpeg enabled       no
librtmp enabled           no
libschroedinger enabled   no
libspeex enabled          no
libtheora enabled         no
libvorbis enabled         no
libvpx enabled            no
libx264 enabled           no
libxvid enabled           no
zlib enabled              no
bzlib enabled             no

Enabled decoders:
pr:  -- empty file

Enabled encoders:
pr:  -- empty file

Enabled hwaccels:
pr:  -- empty file

Enabled parsers:
pr:  -- empty file

Enabled demuxers:
pr:  -- empty file

Enabled muxers:
pr:  -- empty file

Enabled protocols:
pr:  -- empty file

Enabled filters:
pr:  -- empty file

Enabled bsfs:
pr:  -- empty file

Enabled indevs:
pr:  -- empty file

Enabled outdevs:
pr:  -- empty file

License: LGPL version 2.1 or later
Creating config.mak and config.h...
bwddmadm@bwddmliv> gmake
/export/home/USERID/ffmpeg-0.6.1/version.sh: syntax error at line 4: `revision=$' unexpected
CC      libavdevice/alldevices.o
libavdevice/alldevices.c: In function `avdevice_register_all':
libavdevice/alldevices.c:42: error: `CONFIG_ALSA_OUTDEV' undeclared (first use in this function)
libavdevice/alldevices.c:42: error: (Each undeclared identifier is reported only once
libavdevice/alldevices.c:42: error: for each function it appears in.)
libavdevice/alldevices.c:42: error: `CONFIG_ALSA_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:43: error: `CONFIG_AUDIO_BEOS_OUTDEV' undeclared (first use in this function)
libavdevice/alldevices.c:43: error: `CONFIG_AUDIO_BEOS_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:44: error: `CONFIG_BKTR_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:45: error: `CONFIG_DV1394_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:46: error: `CONFIG_JACK_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:47: error: `CONFIG_OSS_OUTDEV' undeclared (first use in this function)
libavdevice/alldevices.c:47: error: `CONFIG_OSS_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:48: error: `CONFIG_V4L2_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:49: error: `CONFIG_V4L_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:50: error: `CONFIG_VFWCAP_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:51: error: `CONFIG_X11_GRAB_DEVICE_INDEV' undeclared (first use in this function)
libavdevice/alldevices.c:54: error: `CONFIG_LIBDC1394_INDEV' undeclared (first use in this function)
gmake: *** [libavdevice/alldevices.o] Error 1
bwddmadm@bwddmliv> exit

script done on Fri Jan 14 11:34:05 2011

person Raoul    schedule 14.01.2011    source источник


Ответы (4)


К сожалению, Solaris /usr/bin/grep не поддерживает флаг -q, похоже, вам нужно указать путь либо для поиска GNU grep, либо для POSIX-совместимого /usr/xpg4/bin/grep в качестве команды grep. Google также может найти пару патчей для ffmpeg, написанных людьми для решения этой проблемы.

Авторы ffmpeg знают об этом проблема, но отказываются менять свой скрипт конфигурации, так как полагаются на соответствие POSIX.

person alanc    schedule 15.01.2011
comment
Спасибо, я проверю это сегодня. Я не могу найти упомянутые вами патчи, не могли бы вы дать ссылку, пожалуйста? - person Raoul; 26.01.2011
comment
Привет, я попытался создать псевдоним для grep с помощью: alias='/usr/xpg4/bin/grep', затем я повторно выполнил часть настройки и получил те же ошибки. - person Raoul; 26.01.2011
comment
Такие сценарии, как configure, запускаются в новом процессе оболочки и не будут получать псевдонимы из вашего текущего процесса оболочки — вам придется изменить свой путь. Патчи, о которых я говорил, находились по таким ссылкам, как trac.handbrake.fr/browser/trunk/contrib/ - person alanc; 27.01.2011
comment
Спасибо, этому патчу три года, у меня нет соответствующих строк в текущей версии ffmpeg, которую я скачал. Погуглил и не могу найти патч для этой версии 0.6.1. Я преодолел множество проблем (см. мой разговор с ShiDoiSi ниже). Настройка работает нормально, я застрял в части «сделать». У вас установлен ffmpeg? Еще раз спасибо за все ваши советы. - person Raoul; 27.01.2011
comment
Нет, я никогда не создавал и не использовал ffmpeg, извините. - person alanc; 28.01.2011

1.- Убедитесь, что установлен gcc

install gcc if needed
# pkg search gcc
# pkg install pkg:/developer/[email protected]

2. Убедитесь, что Yams установлен.

install yams if needed
download from http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
unzip, untar in local dir
#./configure
#make install
add the path
# PATH=$PATH:/usr/local/bin

3. Убедитесь, что установлен GNU Make.

Installed if required
# pkg search gnu make
# pkg install pkg:/developer/build/[email protected]

4.- Убедитесь, что он выбирает правильный grep

e.g. by aliasing grep to /usr/sfw/bin/ggrep if you have the Sun Freeware package installed

5.- Загрузите исходный код: http://ffmpeg.org/releases/ffmpeg-1.0.tar.gz

a.- unzip, untar in local dir
b.- edit configure
    1.- replace awk by nawk
    2.- follow the patch configuration from https://trac.handbrake.fr/browser/trunk/contrib/patch-ffmpeg-solaris.patch?rev=1531
        Some details about the reasons here : http://www.techques.com/question/1-4690966/can't-compile-ffmpeg-on-Solaris-10-sparc
        Be careful the line numbers are not valid for version 1.0
        place the modifications suggested accordingly 
c.- #./configure
d.- # gmake

Ноэль Джаффре

person Noel    schedule 29.11.2012

Похоже, скрипт сборки ожидает найти версии помощников GNU, таких как grep. Убедитесь, что он выбирает правильные, например. присвоив grep псевдоним /usr/sfw/bin/ggrep, если у вас установлен пакет Sun Freeware.

person Volker Stolz    schedule 14.01.2011
comment
Спасибо, я попробую - person Raoul; 26.01.2011
comment
Я попробовал это, создав псевдоним: alias grep='/usr/sfw/bin/ggrep', а затем повторно выполнил настройку, но все равно получаю ошибки, указанные выше. Что-нибудь еще вы предлагаете мне попробовать? Спасибо. - person Raoul; 26.01.2011
comment
Хм, хороший вопрос. затем просто сделайте символическую ссылку где-нибудь с именем grep и поместите место перед PATH. - person Volker Stolz; 26.01.2011
comment
Спасибо за ваш отзыв, я проверю это и сообщу вам, как это работает. - person Raoul; 26.01.2011
comment
Что ж, думаю, это продвинуло меня немного дальше. Не могу разместить здесь из-за нехватки места. pastebin.com/Z5LdsbbX Если у вас есть дополнительные советы, которые были бы очень полезны, я ценю то, что вы сделано до сих пор. Спасибо - person Raoul; 26.01.2011
comment
Что ж, следующим кандидатом, похоже, будет awk -> gawk. - person Volker Stolz; 26.01.2011
comment
У меня нет gawk в /usr/sfw/bin, он живет где-то еще? который gawk ничего не возвращает. - person Raoul; 26.01.2011
comment
Я установил gawk из исходников и связал awk с gawk, как с grep. я проверю это - person Raoul; 26.01.2011
comment
Что ж, теперь я не получаю никаких предупреждений во время настройки, я все еще получаю те же ошибки, упомянутые выше, когда пытаюсь «сделать» это. Какие-либо предложения? - person Raoul; 26.01.2011
comment
Да, мне удалось установить его из исходников, и теперь я не получаю никаких предупреждений на этапе настройки. Спасибо за это. Проблема заключается в том, что на этапе создания я все еще получаю те же ошибки, перечисленные выше. - person Raoul; 26.01.2011
comment
О, действительно, извините, это мало помогает. Вы можете просмотреть config.log и посмотреть, не обнаружите ли вы что-нибудь подозрительное. - person Volker Stolz; 28.01.2011
comment
Хорошо, есть проблема со связыванием, так как он выбирает системный компоновщик 'ld' вместо компоновщика GNU 'gld'; и ассемблер (g)as, так что просто обработайте его так же, как вы обработали (g)grep. Вспеньте, промойте, повторите. - person Volker Stolz; 28.01.2011
comment
Спасибо за совет. Я добавил ld и gas по вашему совету, так же, как мы сделали это с grep. Я вижу такие вещи, как: ld.so.1: cc1: фатальный: libmpc.so.2: ошибка открытия: нет такого файла или каталога gcc: внутренняя ошибка: убит (программа cc1) и ld: фатальный: ошибки ссылки на символ. Вывод не записан в /tmp/ffconf.XXBna4re collect2: ld вернул 1 статус выхода pastebin.com/r1t55m8m - person Raoul; 28.01.2011
comment
Что ж, теперь это становится немного сложнее, поскольку мы смотрим на настройку... некоторые ошибки могут быть просто ожидаемым результатом попытки настройки. Любые изменения в реальном выводе ./configure? - person Volker Stolz; 28.01.2011
comment
ShiDoiSi, большое спасибо за всю помощь, можете ли вы предложить какой-либо способ решения этой проблемы с настройкой? - person Raoul; 31.01.2011

Потратив несколько часов на эту тему, я наконец установил ffmpeg 2.2.2 на Solaris 5.1 SPARC. Шаги:

  • Загрузите исходный код последней версии в формате tar с http://www.ffmpeg.org/download.html.
  • Извлеките смолу
  • Grep должен ссылаться на GGREP — псевдоним grep = /usr/sfw/bin/ggrep
  • Используйте bash вместо sh — необходимо изменить 1-й ряд файлов конфигурации и version.sh.
  • Используйте nawk вместо awk
  • Конфигурация обрабатывает предупреждение об объявлении неявной функции как ошибку. Это может вызвать проблему - мне пришлось установить его обратно на уровень предупреждения, так как это вызвало ошибку относительно отсутствующей ссылки (которая была стандартной библиотекой, поэтому это не должно быть проблемой)
  • Относительно точек 4-6 применяются следующие команды
  • sed 's/\/bin\/sh/\/bin\/bash/' configure > configure.mod
  • sed 's/awk/nawk/' configure.mod > configure.mod2
  • sed '/implicit-function-declaration/d' configure.mod2 > configure.mod3

  • cp configure.mod3 configure

  • sed 's/\/bin\/sh/\/bin\/bash/' version.sh > version.sh.mod
  • cp version.sh.mod version.sh

  • Запустить настроить

  • configure --extra-cflags="-fpic" --disable-mmx --disable-protocol=udp --disable-encoder=nellymoser --disable-debug --arch=sparc --target-os=sunos

  • gmake установить

  • запустить ffmpeg: ./ffmpeg
person HamoriZ    schedule 02.06.2014