Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Проблема при компилировании ffmpeg под window xр


Автор: Ak47black 6.11.2010, 18:39
Здравствуйте.
Сдаюсь, всё перерыл что только мог но так не к чему не пришел.
Хочу скомпилировать ffmpeg с libx264 под windows
Сделал всё тоже самое что написано http://ffmpeg.arrozcru.org/wiki/index.php?title=Quick_ffmpeg_x264.
На шаге 
Цитата

./configure --enable-libx264 --enable-gpl  --enable-memalign-hack --extra-cflags='-I/usr/local/include' --extra-ldflags='-L/usr/local/lib'

получаю
Цитата

ERROR: libx264 not found


Если подправить и сделать
Цитата

$ ./configure --enable-libx264 --enable-gpl  --enable-memalign-hack --extra-ldf
lags='local/lib'

то
Цитата

gcc is unable to create an executable file.

и config.log
Цитата

mktemp is /bin/mktemp
check_ld
check_cc
BEGIN /tmp/ffconf.vKEpPJoM.c
    1    int main(void){ return 0; }
END /tmp/ffconf.vKEpPJoM.c
gcc -c -o /tmp/ffconf.PhZywieE.o /tmp/ffconf.vKEpPJoM.c
gcc local/lib -o /tmp/ffconf.ZSVnjWQh.exe /tmp/ffconf.PhZywieE.o
gcc.exe: local/lib: No such file or directory
C compiler test failed.

Как быть никак незнаю. Так как весь интернет перерыл, но эта проблема нигде толком не решена.
Подскажите пожалуйста, хоть что-нибудь....

Добавлено @ 18:45
Намерен сидеть искать проблему весь сегодняшний, если кто может помочь то буду очень рад.

Добавлено через 12 минут и 27 секунд
Yasm для компиляции xlibx264 , можно скачать http://www.tortall.net/projects/yasm/releases/yasm-1.1.0-win32.exe.
(его надо переименовать в yasm.exe и положить в MinGW\bin)

Добавлено через 13 минут и 22 секунды
Вроде-бы всё что могу сказать. Буду ждать ответов.

Автор: bass 6.11.2010, 19:43
Если не могу подключить библиотеку пользуюсь LoadLybrary...... но это нуторно но возможно......

Автор: Ak47black 6.11.2010, 19:46
bass, но я вроде-бы подключаю её успешно. 
Я всеётаки думаю, что дело тут в другом....

Добавлено @ 19:49
А в чём не имею никакого понятия....

Автор: bass 6.11.2010, 20:20
По ошибкам смотрю у тебя не компелиться....... С лодлибрари все кемпельнеться надо только в ручную все функции прописать.....

Автор: Ak47black 6.11.2010, 20:30
Не, а как-бы всётаки нормально сделать.

Автор: boostcoder 7.11.2010, 03:01
Ak47black, непонятно откуда у вас взялись такие ошибки.. выполнил по инструкции. все собралось.
единственное что пришлось сделать руками - прописать в "libavformat/avformat.h" это:
Код

#include <stdio.h>
int strcasecmp (const char*, const char *);
int strncasecmp (const char*, const char *, size_t);

не видел компилятор почему-то эти две функции, хотя инклудил "string.h"

Автор: Ak47black 7.11.2010, 12:59
boostcoder
А с командой 
Цитата

./configure --enable-libx264 --enable-gpl  --enable-memalign-hack --extra-cflags='-I/usr/local/include' --extra-ldflags='-L/usr/local/lib'

?
Потомучто у меня без 
Цитата

--enable-libx264

то тоже всё собирается.

Сижу в недоумении в каком-то ...
Может я minGW неправильно установил....
Я взял автоматическую инсталяцию http://softlayer.dl.sourceforge.net/project/mingw/Automated%20MinGW%20Installer/mingw-get-inst-20101030/mingw-get-inst-20101030.exe (там MinGW+msys), поэтому coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2 я не скачивал.

Добавлено @ 13:01
И непонимаю почему у меня с такими параметрами не идёт
Цитата

--extra-cflags='-I/usr/local/include' --extra-ldflags='-L/usr/local/lib'

Автор: Ak47black 7.11.2010, 14:00
Низнаю что мне делать.
Всё переисталировал заново, всё как по инструкции http://ffmpeg.arrozcru.org/wiki/index.php?title=Quick_ffmpeg_x264 (добавя в этот раз coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2) и получаю по прежднему
Цитата

$ ./configure --enable-libx264 --enable-gpl --enable-memalign-hack --extra-ldflags='local/lib' --extra-cflags='local/include'
gcc is unable to create an executable file.
If gcc is a cross-compiler, use the --enable-cross-compile option.
Only do this if you know what cross compiling means.
C compiler test failed.

Конец лог файла
Цитата

type mktemp
mktemp is /bin/mktemp
check_ld
check_cc
BEGIN /tmp/ffconf.oUvSCkcE.c
    1    int main(void){ return 0; }
END /tmp/ffconf.oUvSCkcE.c
gcc local/include -c -o /tmp/ffconf.ZHEeNvED.o /tmp/ffconf.oUvSCkcE.c
gcc.exe: local/include: No such file or directory
C compiler test failed.

 smile

Автор: boostcoder 7.11.2010, 15:48
Ak47black, повторю: выполнил все как написано в инструкции.

Добавлено через 1 минуту и 57 секунд
может выложить собранные либы?
или весь пак mingw + msys + ffmpeg + libx264 ?

Автор: Ak47black 7.11.2010, 16:05
boostcoder, да незнаю.
Я вот хоть до посинения, но хочу разобратся почему у меня неходит.....  smile

Добавлено @ 16:06
Цитата(boostcoder @  7.11.2010,  15:48 Найти цитируемый пост)
может выложить собранные либы?

Не, мне сам "принцип" сборки как-бы интересен.

Добавлено @ 16:11
Цитата(boostcoder @  7.11.2010,  15:48 Найти цитируемый пост)
Ak47black, повторю: выполнил все как написано в инструкции.

А пункты
Цитата

   - Install minGW-5.1.6 (installer) to c:\mingw
   - Install MSYS-1.0.11 (installer) to c:\msys
       - Say yes and yes and then add c:/mingw to msys post installation

Как у вас?

Я их сделал немного может подругому (так как во время напсания туторириала это дело было подругому)
Цитата

Скачал http://softlayer.dl.sourceforge.net/project/mingw/Automated%20MinGW%20Installer/mingw-get-inst-20101030/mingw-get-inst-20101030.exe (там MinGW+msys)
Запустил исталяцию, поставил галочки на всех "компонентах".
И происталировал.

Автор: boostcoder 7.11.2010, 16:12
Цитата(Ak47black @  7.11.2010,  16:05 Найти цитируемый пост)
мне сам "принцип" сборки как-бы интересен. 

а я то думал вам реально для дела нужно.. а вы так...компилятор тестите smile

Добавлено через 27 секунд
спасибо smile

Добавлено через 2 минуты и 16 секунд
Цитата(Ak47black @  7.11.2010,  16:05 Найти цитируемый пост)
А пункты
Цитата

   - Install minGW-5.1.6 (installer) to c:\mingw
   - Install MSYS-1.0.11 (installer) to c:\msys
       - Say yes and yes and then add c:/mingw to msys post installation

Как у тебя?

msys + mingw + git у меня были установлены раньше. я только иногда обновляю.

Автор: Ak47black 7.11.2010, 16:15
Какие-нибудь идеи по продвижению есть?  smile

Добавлено @ 16:16
Цитата(boostcoder @  7.11.2010,  16:12 Найти цитируемый пост)
msys + mingw + git у меня были установлены раньше. я только иногда обновляю. 

А вы попробуйте в другое место установить новый (не стерая старый), как тогда?

Автор: boostcoder 7.11.2010, 16:23
Цитата(Ak47black @  7.11.2010,  16:15 Найти цитируемый пост)
А вы попробуйте в другое место установить новый (не стерая старый), как тогда?

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

Автор: Ak47black 7.11.2010, 16:25
Ладно, а по лог файлу что можно исчерпать
Цитата

type mktemp
mktemp is /bin/mktemp
check_ld
check_cc
BEGIN /tmp/ffconf.oUvSCkcE.c
    1    int main(void){ return 0; }
END /tmp/ffconf.oUvSCkcE.c
gcc local/include -c -o /tmp/ffconf.ZHEeNvED.o /tmp/ffconf.oUvSCkcE.c
gcc.exe: local/include: No such file or directory
C compiler test failed.

?

Добавлено через 25 секунд
Цитата

gcc local/include -c -o /tmp/ffconf.ZHEeNvED.o /tmp/ffconf.oUvSCkcE.c

Не странно-ли?

Добавлено через 59 секунд
Может это всётаки изза путей?
Как проверить?

Добавлено через 2 минуты и 6 секунд
Почему в примере вот такой путь 
Цитата

-I/usr/local/include

с буквой -I ?

Добавлено через 3 минуты и 14 секунд
С компилятором по ходу у меня проблемм нет
Цитата

gcc version 4.5.0 (GCC)

Автор: boostcoder 7.11.2010, 16:29
Цитата(Ak47black @  7.11.2010,  16:25 Найти цитируемый пост)
gcc.exe: local/include: No such file or directory

угу

Автор: Ak47black 7.11.2010, 16:30
Цитата(boostcoder @  7.11.2010,  16:29 Найти цитируемый пост)
угу 

Всмысле в путях?

Автор: boostcoder 7.11.2010, 16:30
Цитата(Ak47black @  7.11.2010,  16:25 Найти цитируемый пост)
Почему в примере вот такой путь 
Цитата

-I/usr/local/include

с буквой -I ?

вы не знаете что означает ключ -I ? smile 

Автор: Ak47black 7.11.2010, 16:32
Цитата(boostcoder @  7.11.2010,  16:30 Найти цитируемый пост)
-I

Точно непомню. Где-то сталкивался.

Автор: boostcoder 7.11.2010, 16:33
Цитата(Ak47black @ 7.11.2010,  16:32)
Цитата(boostcoder @  7.11.2010,  16:30 Найти цитируемый пост)
-I

Точно непомню. Где-то сталкивался.

путь к хидерам

Автор: Ak47black 7.11.2010, 16:34
Цитата(boostcoder @  7.11.2010,  16:33 Найти цитируемый пост)
хидерам 

headers?

Автор: boostcoder 7.11.2010, 16:35
Цитата(Ak47black @  7.11.2010,  16:30 Найти цитируемый пост)
Всмысле в путях? 

нет.
в том, что компилятор использует этот путь как файл. иначе, ели бы такого пути просто не существовало но вы бы его указали в -I, компилятор  бы не выдал сообщения об ошибке.

Добавлено через 18 секунд
Цитата(Ak47black @  7.11.2010,  16:34 Найти цитируемый пост)
headers?

да.

Автор: Ak47black 7.11.2010, 16:35
Цитата(boostcoder @  7.11.2010,  16:33 Найти цитируемый пост)
путь к хидерам 

А как через MINGW консоль узнать каков он? (по умолчанию)

Добавлено через 5 минут и 52 секунды
А без этих "букв" кстати, есди вот так
Цитата

$ ./configure --enable-libx264 --enable-gpl  --enable-memalign-hack --extra-cflags='/usr/local/include' --extra-ldflags='/usr/local/lib'

то получаю тоже самое
Цитата

BEGIN /tmp/ffconf.IIsvUNZU.c
    1    int main(void){ return 0; }
END /tmp/ffconf.IIsvUNZU.c
gcc /usr/local/include -c -o /tmp/ffconf.xbKwWgCb.o /tmp/ffconf.IIsvUNZU.c
gcc.exe: C:/MinGW/msys/1.0/local/include: linker input file unused because linking not done
gcc /usr/local/lib -o /tmp/ffconf.ilcgWTRa.exe /tmp/ffconf.xbKwWgCb.o
c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: cannot find C:/MinGW/msys/1.0/local/lib: Permission denied
collect2: ld returned 1 exit status
C compiler test failed.

 но не
Цитата

ERROR: libx264 not found


Добавлено через 6 минут и 42 секунды
А "-L" что значит?

Добавлено через 9 минут и 9 секунд
Всётаки что-то стронное есть с 
Цитата

gcc /usr/local/include -c -o /tmp/ffconf.xbKwWgCb.o /tmp/ffconf.IIsvUNZU.c
gcc.exe: C:/MinGW/msys/1.0/local/include: linker input file unused because linking not done


Добавлено через 9 минут и 37 секунд
Цитата

gcc /usr/local/include -c -o /tmp/ffconf.xbKwWgCb.o /tmp/ffconf.IIsvUNZU.c

странные параметры какие-то....

Автор: boostcoder 7.11.2010, 16:47
Цитата(Ak47black @  7.11.2010,  16:35 Найти цитируемый пост)
А как через MINGW консоль узнать каков он? (по умолчанию)

мингв тут не при чем. как и gcc.
это влияние линукс систем.

http://bban2.tistory.com/212
http://www.tuxfiles.org/linuxhelp/linuxdir.html

единственная разница у мингва в том, что свои хидеры+ либы по умолчанию он ищет в каталогах указанных при его сборке. но если их переместить в стандартное местоположение(/usr/include и /usr/lib) то он не будет против.

Добавлено через 1 минуту и 52 секунды
Цитата(Ak47black @  7.11.2010,  16:35 Найти цитируемый пост)
C:/MinGW/msys

впервые вижу такое smile

Добавлено через 3 минуты и 20 секунд
вы похоже не очень понимаете что такое msys ;)
дело в том, что msys эмулирует среду линукс. по этому, нужно мингв инсталить в msys, а не наоборот.

Автор: Ak47black 7.11.2010, 16:51
Цитата(boostcoder @  7.11.2010,  16:47 Найти цитируемый пост)
впервые вижу такое smile  

А это "исталятор" так делает  smile 

Автор: boostcoder 7.11.2010, 16:52
Цитата(Ak47black @  7.11.2010,  16:35 Найти цитируемый пост)
странные параметры какие-то....

ничего странного.

Добавлено через 1 минуту
Цитата(Ak47black @  7.11.2010,  16:51 Найти цитируемый пост)
А это "исталятор" так делает

а инсталятор вы "делали" ?

Автор: Ak47black 7.11.2010, 16:53
А
Цитата(Ak47black @  7.11.2010,  16:35 Найти цитируемый пост)
gcc /usr/local/include -c -o /tmp/ffconf.xbKwWgCb.o /tmp/ffconf.IIsvUNZU.c

Это путь работы?

Автор: boostcoder 7.11.2010, 16:55
Цитата(Ak47black @  7.11.2010,  16:53 Найти цитируемый пост)
Это путь работы? 

это доллжен был быть путь к хидерам. но вы его изменили. потому у него нет ключа -I

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

Автор: Ak47black 7.11.2010, 16:55
Цитата(boostcoder @  7.11.2010,  16:52 Найти цитируемый пост)
а инсталятор вы "делали" ? 

Да не, http://sourceforge.net/projects/mingw/files/.
Я ничего сам не выдумовал.... 

Автор: boostcoder 7.11.2010, 16:56
Цитата(Ak47black @  7.11.2010,  16:55 Найти цитируемый пост)
Да не, отсюда.

хз что это такое..

Автор: Ak47black 7.11.2010, 16:57
Цитата(boostcoder @  7.11.2010,  16:55 Найти цитируемый пост)
потому у него нет ключа -I

А он должен там быть?

Добавлено @ 16:59
Цитата(Ak47black @  7.11.2010,  16:35 Найти цитируемый пост)
linker input file unused because linking not done

Он это дело берёт как файл что-ли?

Добавлено через 3 минуты и 22 секунды
У кого ещё есть какие идеи что это за "зверь" такой? И как его брать?  smile 

Автор: xvr 8.11.2010, 15:09
Цитата(Ak47black @  7.11.2010,  16:57 Найти цитируемый пост)
Он это дело берёт как файл что-ли?
Да

Первая ошибка у вас из за этого:
Цитата

--extra-ldflags='local/lib'
Должно быль КАК МИНИМУМ так
Цитата

--extra-ldflags='-Llocal/lib'
А еще точнее, наверное так:
Цитата

--extra-ldflags='-L/usr/local/lib'


Вторая ошибка - 
Цитата

--extra-ldflags='local/lib' --extra-cflags='local/include'
должно быть
Цитата

--extra-ldflags='-L/usr/local/lib' --extra-cflags='-I/usr/local/include'

Автор: boostcoder 8.11.2010, 15:28
но у меня же все собралось smile 

скажу вам по секрету, эти флаги можно просто убрать. результат тот же. что логично smile 

Автор: Ak47black 8.11.2010, 16:42
xvr
я это всё перепробовал, тоже самое
Проблема больше связана с текушим mingw (насколько я вижу)

Автор: Ak47black 8.11.2010, 18:49
Ещё раз сформулирую чётко что у меня не выходит.

Я хочу скомпилировать ffmpeg.
Испольузю я http://ffmpeg.arrozcru.org/wiki/index.php?title=Quick_ffmpeg_x264 тутрориал.
Проблема в том что на время написания этого туториала изменилась инсталяция msys + mingw.
И все попытки которые я втретил облазив с google и что я только смог увидеть, дают либо
Цитата

ERROR: libx264 not found

либо
Цитата

gcc is unable to create an executable file.

Автор: xvr 8.11.2010, 21:56
Цитата(Ak47black @  8.11.2010,  16:42 Найти цитируемый пост)
я это всё перепробовал, тоже самое
Все ошибки 'gcc is unable to create an executable file.' связанны ИМЕННО с этими опциями. gcc/mingw тут не при чем

А вот это 'ERROR: libx264 not found' видимо связанно с отсутствием этой самой библиотеки

Вы вот это из тьюториала делали?
Код

- Then get libx264 and compile it:
       cd ..
       git clone git://git.videolan.org/x264.git
       cd x264
       ./configure
       make
       make install
Оно собралось?

PS. В тьюториале флаги прописаны правильно

Автор: Ak47black 8.11.2010, 22:01
Цитата(xvr @  8.11.2010,  21:56 Найти цитируемый пост)
Оно собралось?

Да. За исключением того, что нужно было ещё добавить yasm. (я скачал http://www.tortall.net/projects/yasm/releases/yasm-1.1.0-win32.exe и положил как MinGW\bin\yasm.exe)

Цитата

'ERROR: libx264 not found' 

В local/lib и local\include есть точно(например вижу libx264.a, x264.h), но не в usr/...

Добавлено через 1 минуту и 13 секунд
Полный путь к local папке
Цитата

C:\MinGW\msys\1.0\local

Автор: Ak47black 8.11.2010, 23:57
Нашел информацию по своей ошибке http://forum.doom9.org/showthread.php?t=149735
Вы не могли подсказать как в моём случае 
Сделать пукт 
Цитата
compile & install pthreads statically

И как это потом связать с ffmpeg?

Автор: xvr 9.11.2010, 10:45
Цитата(Ak47black @  8.11.2010,  22:01 Найти цитируемый пост)
Полный путь к local папке
Вот и добавьте эти пути через --extra-ldflags и --extra-cflags
Кстати, а они видны для gcc как /usr/local? (Не знаю как в msys сделано мэпирование путей)

Цитата(Ak47black @  8.11.2010,  23:57 Найти цитируемый пост)
Вы не могли подсказать как в моём случае 
Сделать пукт 
Отложите, пока не начнет на pthread ругаться  smile Сначала разберитесь с libx264


Автор: Ak47black 9.11.2010, 16:05
xvr, с путями всё нормально.
Проблема тут изза того что libx264 нужно делать как библиотеку либо с pthread можно как-то сделать без.
Поэтому я с pthread и разбираюсь.

Автор: xvr 9.11.2010, 18:04
Он бы не ругался на отсуствующую libx264, если бы была проблема с pthread. Ошибки были бы другие

Автор: Ak47black 9.11.2010, 18:22
xvr, дело в том что
Цитата

There is a bug in FFmpeg's configure that makes it not detect libx264 on Windows. This bug will not be fixed because FFmpeg's build system maintainer stubbornly refuses to fix it. To enable libx264, you must pass this extra parameter to configure:
--extra-libs='-lx264 -lpthread'

Автор: xvr 9.11.2010, 22:07
Цитата(Ak47black @ 9.11.2010,  18:22)
xvr, дело в том что
Цитата

There is a bug in FFmpeg's configure .... To enable libx264, you must pass this extra parameter to configure:
--extra-libs='-lx264 -lpthread'

Эта опция принудительно подключает библиотеки linx264 и libpthread при линковке. С ней тоже не работает?

Автор: Ak47black 9.11.2010, 23:34
Я окончательно понял в чём у меня проблема. Уже перемучился то по полной ...
Команда 
Цитата
clone git://git.ffmpeg.org/ffmpeg/

скачивает старую версию.
xvr, Спасибо Вам за помошь.

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