2015-02-23 3 views
0

У меня установлен ffmpeg, и я пытаюсь скомпилировать libx264, но продолжаю получать ошибку. Большинство результатов, которые я нашел из поиска, касаются проблем компиляции ffmpeg или их настройки с помощью libx264, но я не могу даже заставить libx264 компилироваться.Ошибка компиляции libx264: Неопределенные символы для архитектуры x86_64

Здесь ошибка:

Undefined symbols for architecture x86_64: 
    "_CFDataCreate", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _vda_old_h264_end_frame in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
     _vda_h264_end_frame in libavcodec.a(vda_h264.o) 
    "_CFDictionaryCreateMutable", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_CFDictionarySetValue", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_CFNumberCreate", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_CFRelease", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _vda_old_h264_end_frame in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
     _vda_h264_end_frame in libavcodec.a(vda_h264.o) 
    "_CVPixelBufferGetBaseAddress", referenced from: 
     _vdadec_decode in libavcodec.a(vda_h264_dec.o) 
    "_CVPixelBufferGetBaseAddressOfPlane", referenced from: 
     _vdadec_decode in libavcodec.a(vda_h264_dec.o) 
    "_CVPixelBufferGetBytesPerRow", referenced from: 
     _vdadec_decode in libavcodec.a(vda_h264_dec.o) 
    "_CVPixelBufferGetBytesPerRowOfPlane", referenced from: 
     _vdadec_decode in libavcodec.a(vda_h264_dec.o) 
    "_CVPixelBufferGetPixelFormatType", referenced from: 
     _vda_decoder_callback in libavcodec.a(vda_h264.o) 
    "_CVPixelBufferGetPlaneCount", referenced from: 
     _vdadec_decode in libavcodec.a(vda_h264_dec.o) 
    "_CVPixelBufferIsPlanar", referenced from: 
     _vdadec_decode in libavcodec.a(vda_h264_dec.o) 
    "_CVPixelBufferLockBaseAddress", referenced from: 
     _vdadec_decode in libavcodec.a(vda_h264_dec.o) 
    "_CVPixelBufferRelease", referenced from: 
     _release_buffer in libavcodec.a(vda_h264_dec.o) 
     _vda_old_h264_end_frame in libavcodec.a(vda_h264.o) 
     _vda_h264_uninit in libavcodec.a(vda_h264.o) 
     _ff_vda_output_callback in libavcodec.a(vda_h264.o) 
     _release_buffer in libavcodec.a(vda_h264.o) 
     _vda_h264_release_buffer in libavcodec.a(vda_h264.o) 
    "_CVPixelBufferRetain", referenced from: 
     _vdadec_decode in libavcodec.a(vda_h264_dec.o) 
     _vda_decoder_callback in libavcodec.a(vda_h264.o) 
     _ff_vda_output_callback in libavcodec.a(vda_h264.o) 
    "_CVPixelBufferUnlockBaseAddress", referenced from: 
     _release_buffer in libavcodec.a(vda_h264_dec.o) 
    "_VDADecoderCreate", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_VDADecoderDecode", referenced from: 
     _vda_old_h264_end_frame in libavcodec.a(vda_h264.o) 
     _vda_h264_end_frame in libavcodec.a(vda_h264.o) 
    "_VDADecoderDestroy", referenced from: 
     _ff_vda_destroy_decoder in libavcodec.a(vda_h264.o) 
    "_VDADecoderFlush", referenced from: 
     _vda_old_h264_end_frame in libavcodec.a(vda_h264.o) 
     _vda_h264_end_frame in libavcodec.a(vda_h264.o) 
    "_iconv", referenced from: 
     _avcodec_decode_subtitle2 in libavcodec.a(utils.o) 
    "_iconv_close", referenced from: 
     _avcodec_open2 in libavcodec.a(utils.o) 
     _avcodec_decode_subtitle2 in libavcodec.a(utils.o) 
    "_iconv_open", referenced from: 
     _avcodec_open2 in libavcodec.a(utils.o) 
     _avcodec_decode_subtitle2 in libavcodec.a(utils.o) 
    "_kCFAllocatorDefault", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _vda_old_h264_end_frame in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
     _vda_h264_end_frame in libavcodec.a(vda_h264.o) 
    "_kCFCoreFoundationVersionNumber", referenced from: 
     _vdadec_init in libavcodec.a(vda_h264_dec.o) 
    "_kCFTypeDictionaryKeyCallBacks", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_kCFTypeDictionaryValueCallBacks", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_kCVPixelBufferIOSurfacePropertiesKey", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_kCVPixelBufferPixelFormatTypeKey", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_kVDADecoderConfiguration_Height", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_kVDADecoderConfiguration_SourceFormat", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_kVDADecoderConfiguration_Width", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_kVDADecoderConfiguration_avcCData", referenced from: 
     _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
     _ff_vda_default_init in libavcodec.a(vda_h264.o) 
    "_swr_alloc", referenced from: 
     _opus_decode_init in libavcodec.a(opusdec.o) 
    "_swr_close", referenced from: 
     _opus_decode_packet in libavcodec.a(opusdec.o) 
     _opus_decode_flush in libavcodec.a(opusdec.o) 
    "_swr_convert", referenced from: 
     _opus_decode_packet in libavcodec.a(opusdec.o) 
    "_swr_free", referenced from: 
     _opus_decode_close in libavcodec.a(opusdec.o) 
    "_swr_init", referenced from: 
     _opus_decode_packet in libavcodec.a(opusdec.o) 
    "_swr_is_initialized", referenced from: 
     _opus_decode_packet in libavcodec.a(opusdec.o) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [x264] Error 1 

Update: Я работал вокруг этого только с помощью доморощенного установить FFmpeg с libx264.

+0

Как ваш ffmpeg, связанный с компиляцией x264? Какова ваша конфигурация для x264? – LordNeckbeard

ответ

1

Если вы хотите только libx264 и не нуждаетесь в x264 cli, отключите вход lavf во время настройки с помощью ./configure --disable-lavf, потому что это проблема с зависимостями libavcodec/libavformat (lavf).

+0

Спасибо за ответ, но мне понадобится x264 cli, чтобы вы знали, как я могу исправить проблему с зависимостями? – elu

+0

Если вам нужен x264 cli с входом lavf, вам нужно исправить вашу настройку pkg-config или добавить свои зависимости с опцией -extra-ldflags. В значительной степени это та же проблема, что и https://mailman.videolan.org/pipermail/x264-devel/2015-February/010971.html – nobody555

4

Вам необходимо добавить следующие рамки для вашего проекта: VideoDecodeAcceleration.framework, CoreVideo.framework, CoreFoundation.framework

Чтобы добавить их выбрать цель, перейдите в раздел «Сборка Phases -> Ссылка Двоичные с библиотеками» нажмите кнопку + и выберите свои рамки. После этого все должно скомпилироваться.