Я пытаюсь установить новейшую версию libav с libav веб-сайта. В настоящее время быть версией 11.7. Я разархивировал, настроил, делаю и делаю установку.
Для./настраивать я попытался использовать различные варианты. Предусмотрительно, если бы я добавляю/удаляю опцию с./настраивать, я сделал бы это с новой копией исходного кода и также очистил освобождение и заголовки.
Дополнительные опции были:
./configure --enable-libx264 --enable-librtmp --enable-gpl --enable-nonfree --enable-muxer=mp4 --enable-muxer=h264 --enable-demuxer=aac --enable-demuxer=h264 --enable-encoder=libx264 --enable-encoder=libfdk_aac --enable-decoder=libfdk_aac --enable-version3
Я также усталый это без любых дополнительных опций.
В затмении IDE я настроил компилятор для включения/usr/local/libs в его путь поиска и также включал освобождение себя.
Я не знаю, что еще сделать. Я продолжаю получать неопределенные ссылки.
Отредактируйте (Дополнительная информация): Я упростил код до, было это, только функция av_register_all ();. я все еще получаю ошибки. Вот некоторые:
/usr/local/lib/libavcodec.a(libx264.o): In function `X264_frame':
/usr/local/src/libav/libavcodec/libx264.c:140: undefined reference to `x264_picture_init'
/usr/local/src/libav/libavcodec/libx264.c:142: undefined reference to `x264_bit_depth'
/usr/local/src/libav/libavcodec/libx264.c:160: undefined reference to `x264_encoder_reconfig'
/usr/local/src/libav/libavcodec/libx264.c:166: undefined reference to `x264_encoder_reconfig'
/usr/local/src/libav/libavcodec/libx264.c:173: undefined reference to `x264_encoder_reconfig'
/usr/local/src/libav/libavcodec/libx264.c:192: undefined reference to `x264_encoder_reconfig'
/usr/local/src/libav/libavcodec/libx264.c:232: undefined reference to `x264_encoder_reconfig'
/usr/local/src/libav/libavcodec/libx264.c:237: undefined reference to `x264_encoder_encode'
/usr/local/src/libav/libavcodec/libx264.c:243: undefined reference to `x264_encoder_delayed_frames'
/usr/local/src/libav/libavcodec/libx264.c:237: undefined reference to `x264_encoder_encode'
/usr/local/src/libav/libavcodec/libx264.c:179: undefined reference to `x264_encoder_reconfig'
/usr/local/src/libav/libavcodec/libx264.c:198: undefined reference to `x264_encoder_reconfig'
/usr/local/src/libav/libavcodec/libx264.c:186: undefined reference to `x264_encoder_reconfig'
/usr/local/lib/libavcodec.a(libx264.o): In function `X264_init_static':
/usr/local/src/libav/libavcodec/libx264.c:577: undefined reference to `x264_bit_depth'
/usr/local/lib/libavcodec.a(libx264.o): In function `X264_close':
/usr/local/src/libav/libavcodec/libx264.c:278: undefined reference to `x264_encoder_close'
/usr/local/lib/libavcodec.a(libx264.o): In function `X264_init':
/usr/local/src/libav/libavcodec/libx264.c:314: undefined reference to `x264_param_default'
/usr/local/src/libav/libavcodec/libx264.c:319: undefined reference to `x264_param_default_preset'
/usr/local/src/libav/libavcodec/libx264.c:415: undefined reference to `x264_param_parse'
/usr/local/src/libav/libavcodec/libx264.c:416: undefined reference to `x264_param_parse'
/usr/local/src/libav/libavcodec/libx264.c:417: undefined reference to `x264_param_parse'
/usr/local/src/libav/libavcodec/libx264.c:418: undefined reference to `x264_param_parse'
/usr/local/src/libav/libavcodec/libx264.c:459: undefined reference to `x264_param_apply_fastfirstpass'
/usr/local/src/libav/libavcodec/libx264.c:465: undefined reference to `x264_param_apply_profile'
/usr/local/src/libav/libavcodec/libx264.c:501: undefined reference to `x264_param_parse'
/usr/local/src/libav/libavcodec/libx264.c:519: undefined reference to `x264_encoder_open_148'
/usr/local/src/libav/libavcodec/libx264.c:532: undefined reference to `x264_encoder_headers'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_subpacket':
/usr/local/src/libav/libavcodec/opusdec.c:382: undefined reference to `avresample_is_open'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_frame':
/usr/local/src/libav/libavcodec/opusdec.c:221: undefined reference to `avresample_is_open'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_init_resample':
/usr/local/src/libav/libavcodec/opusdec.c:163: undefined reference to `avresample_open'
/usr/local/src/libav/libavcodec/opusdec.c:169: undefined reference to `avresample_convert'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_frame':
/usr/local/src/libav/libavcodec/opusdec.c:236: undefined reference to `avresample_convert'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_flush_resample':
/usr/local/src/libav/libavcodec/opusdec.c:118: undefined reference to `avresample_convert'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_subpacket':
/usr/local/src/libav/libavcodec/opusdec.c:414: undefined reference to `avresample_close'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_flush':
/usr/local/src/libav/libavcodec/opusdec.c:616: undefined reference to `avresample_close'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_close':
/usr/local/src/libav/libavcodec/opusdec.c:640: undefined reference to `avresample_free'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_init':
/usr/local/src/libav/libavcodec/opusdec.c:704: undefined reference to `avresample_alloc_context'
/usr/local/lib/libavcodec.a(pthread_frame.o): In function `ff_frame_thread_free':
/usr/local/src/libav/libavcodec/pthread_frame.c:522: undefined reference to `pthread_join'
/usr/local/lib/libavcodec.a(pthread_frame.o): In function `ff_frame_thread_init':
/usr/local/src/libav/libavcodec/pthread_frame.c:648: undefined reference to `pthread_create'
/usr/local/lib/libavcodec.a(pthread_slice.o): In function `ff_slice_thread_free':
/usr/local/src/libav/libavcodec/pthread_slice.c:110: undefined reference to `pthread_join'
/usr/local/lib/libavcodec.a(pthread_slice.o): In function `ff_slice_thread_init':
/usr/local/src/libav/libavcodec/pthread_slice.c:211: undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
Чтобы быть более конкретным, освобождение установлено в/usr/local/lib каталоге, заголовки установлены/usr/local/include/libav*. Я также попытался компилировать свой исходный код командной строкой, а не IDE, дающим тот же результат.
параметр командной строки:
c++ -L/usr/local/lib test.cpp -lx264 -lavresample -lavformat -lavutil -lavcodec -lavutil -lz -lavutil -o out
Проблема - то, что libav библиотеки должны быть указаны в определенном порядке разрешить все зависимости. Я смог найти правильный порядок путем компиляции без дополнительных библиотек сначала. Затем, когда компилятор жаловался на некорректную ссылку, я определил местоположение библиотеки путем поиска с помощью Google того, какой библиотеке функция принадлежала. Я сделал это, пока все зависимости не были разрешены. Получающийся порядок был
Используя g ++ для компиляции кода, я использовал эту команду:
c++ ./main.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil -lz -lx264 -lpthread -lavresample -o output
Удостоверьтесь, что у Вас есть этот блок:
extern "C" {
#include<avformat/avformat.h>
#include<avformat/...whatever....h>
}
В файлах demux.cpp и codec.cpp также.
РЕДАКТИРОВАНИЕ
Испытанный, чтобы сделать то, что Вы сделали и хорошо работали. Вот то, что я сделал:
$ cat av.cpp
extern "C" {
#include <libavformat/avformat.h>
}
int main(void)
{
av_register_all();
return 0;
}
$ g++ av.cpp -lavformat
$ ./a.out
HTH