Сбой компиляции Ffmpeg из-за неопределенного символа _x264_encoder_open_112 для архитектуры x86_64 - PullRequest
4 голосов
/ 27 июня 2011

Я собираю ffmpeg для Snow Leopard из исходного кода. Использование Macport не вариант, так как у меня есть некоторые пользовательские изменения в ffmpeg. Команды make:

$ ./configure --enable-gpl --enable-libmp3lame --enable-static \
            --disable-shared --enable-libx264 --enable-pthreads \
            --disable-doc --enable-avfilter
$ make

Ошибка:

CC  ffplay.o
ffplay.c: In function ‘SDL_main’:
ffplay.c:3157: warning: assignment discards qualifiers from pointer target type
LD  ffplay_g
Undefined symbols for architecture x86_64:
  "_x264_encoder_open_112", referenced from:
      _X264_init in libavcodec.a(libx264.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [ffplay_g] Error 1

Я скомпилировал libx264 из исходного кода, и все прошло нормально.

$ cd x264-snapshot-20101228-2245; ./configure && make && sudo make install

... и содержит символ "_x264_encoder_open_112"

$ nm ./libx264.a | grep _x264_encoder_open_112
0000000000003ef0 T _x264_encoder_open_112
000000000000d7b0 S _x264_encoder_open_112.eh

Что может быть не так?

Ответы [ 3 ]

3 голосов
/ 18 августа 2011

Был конфликт между одноименными либами от /opt/local/lib и /usr/lib.Первый поддерживается Macport, а второй был моей собственной областью разработки.Поскольку я хотел использовать последнее местоположение, мне пришлось удалить / временно переименовать их в /opt/local/lib, чтобы заставить gcc забрать их с /usr/lib

В вашем случае пути могут отличаться, но выполучить представление.

Если у вас есть более чистый способ достичь этого, я весь слух

0 голосов
/ 23 февраля 2012

Я собираюсь добавить для пользователей Homebrew на Mac OSX, имеющих эту проблему:

У меня были дополнительные библиотеки libx264 в /usr/lib, которые мне пришлось удалить.

Этопривел к этой ошибке при сборке ffmpeg с brew install ffmpeg --use-clang или brew install ffmpeg --use-gcc:

LD  libavcodec/libavcodec.53.dylib
AR  libavcodec/libavcodec.a
Undefined symbols for architecture x86_64:
  "_x264_bit_depth", referenced from:
      _X264_init_static in libx264.o
      _X264_frame in libx264.o
  "_x264_picture_init", referenced from:
      _X264_frame in libx264.o
  "_x264_param_default_preset", referenced from:
      _X264_init in libx264.o
  "_x264_param_apply_fastfirstpass", referenced from:
      _X264_init in libx264.o
  "_x264_param_apply_profile", referenced from:
      _X264_init in libx264.o
  "_x264_encoder_open_120", referenced from:
      _X264_init in libx264.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [libavcodec/libavcodec.53.dylib] Error 1

Дополнительные файлы были:

/usr/lib/libx264.79.dylib
/usr/lib/libx264.a
/usr/lib/libx264.dylib

Однако эти версии могут отличаться.После удаления сборка завершилась успешно.

Оставив здесь этот ответ, потому что было очень запутанно пытаться найти соединение с libavcodec сбой.

0 голосов
/ 27 июня 2011

Попробуйте настроить x264 с параметром --enable-static.

У меня была похожая проблема, и это было для меня решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...