Я попытался построить это, но всегда получал ошибку времени соединения.Не удалось подключиться к FFmpeg libaries
#include <libavutil/log.h>
int main(int argc, char *argv[])
{
::av_log_set_flags(AV_LOG_SKIP_REPEATED);
return 0;
}
Мой дистрибутив Debian GNU/Linux 8 (jessie). FFmpeg был построен сам, и команда конфигурирования был ...
$ ./configure --prefix=/usr/local --disable-static --enable-shared \
> --extra-ldflags='-Wl,-rpath=/usr/local/lib'
канальном ошибка заключается в следующем.
$ g++ foo.cpp -D__STDC_CONSTANT_MACROS -Wall \
> -Wl,-rpath=/usr/local/lib \
> $(pkg-config --cflags --libs libavutil)
/tmp/ccKzgEFb.o: In function `main':
foo.cpp:(.text+0x17): undefined reference to `av_log_set_flags(int)'
collect2: error: ld returned 1 exit status
где выход pkg-config
является ...
$ pkg-config --cflags --libs libavutil
-I/usr/local/include -L/usr/local/lib -lavutil
objdump
показывает, что общий объект libavutil.so действительно есть av_log_set_flogs
внутри.
$ objdump --dynamic-syms /usr/local/lib/libavutil.so | grep 'av_log_set_flags'
000260f0 g DF .text 0000000a LIBAVUTIL_54 av_log_set_flags
Пожалуйста, обратите внимание, что команда g++
используется для создания вышеуказанного приложения имела опцию компоновщика -Wl,-rpath=/usr/local/lib
, хотя он по-прежнему не работает. Кроме того, я пытался контролировать с inotifywait
, если была вызвана другая версия, предоставленная дистрибутивом. Их не было, и тот, который был открыт во время исполнения g++
, был /usr/local/lib/libavutil.so.
Резюме:
/usr/local/lib/libavutil.so имеет символ.
-rpath
было использовано для связи с общей библиотекой.Зачем нужна ссылка-время? T_T
Любое предложение или информация были бы высоко оценены! Благодаря!
REEDIT: ffplay
работает нормально и ldd
показывает, что он использует /usr/local/lib/libavutil.so. Таким образом, библиотеки, похоже, не сломаны, и проблема заключается в том, как создавать свои собственные коды для использования библиотек.
stackoverflow говорит: «Не используйте комментарий, чтобы сказать спасибо», но я действительно очень благодарю вас. T_T. Вы спасли мне жизнь, сэр. Я был так в отчаянии в этом, что даже голоса просили меня просто самоубийство. Большое вам спасибо, Галик. – Cody