2015-02-23 93 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 

更新:我工作圍繞這隻要使用自制與libx264安裝的ffmpeg。

+0

你的ffmpeg x264是如何鏈接到編譯的?你對x264的配置是什麼? – LordNeckbeard 2015-02-23 18:20:12

回答

1

如果您只需要libx264,並且不需要x264 cli而不是在使用./configure --disable-lavf進行配置期間禁用lavf輸入,因爲它與libavcodec/libavformat(lavf)依賴關係有關。

+0

感謝您的迴應,但我將需要x264 cli所以你知道我可以如何解決與依賴問題? – elu 2015-02-23 15:42:56

+0

如果您需要帶有lavf輸入的x264 cli,則需要修復pkg-config設置或使用--extra-ldflags選項添加您的依賴關係。幾乎與https://mailman.videolan.org/pipermail/x264-devel/2015-February/010971.html相同 – nobody555 2015-02-23 19:11:49

4

您需要將以下框架添加到您的項目:VideoDecodeAcceleration.framework,CoreVideo.framework,CoreFoundation.framework

要增加他們選擇你的目標,去「構建階段 - >鏈接二進制與圖書館」點擊+按鈕並選擇你的框架。之後所有東西都應該編譯。