FFmpeg-Libavcodec-无法编译,未找到文件错误,但文件存在

问题描述

这与C ++无关,而与 FFmpeg 中使用的特定编译avcodec和avformat有关。我正在尝试首次编译ffmpeg项目代码。所有链接均已解决,程序错误提示我们。

我正在编写我的第一个程序-尝试在C ++代码中使用avformat库。此行上的链接错误

/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --build /Users/sasha/CLionProjects/ffmpeg-01 --target all -- -j 12
Scanning dependencies of target docs
[  5%] Generating HTML documentation
[ 20%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/input.c.o
[ 20%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/init.c.o
[ 20%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/context.c.o
[ 30%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/vulkan.c.o
[ 30%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/monitor.c.o
[ 35%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/cocoa_init.m.o
[ 45%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/cocoa_joystick.m.o
[ 45%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/window.c.o
[ 50%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/cocoa_monitor.m.o
[ 60%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/cocoa_window.m.o
[ 60%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/cocoa_time.c.o
[ 60%] Built target docs
[ 65%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/posix_thread.c.o
[ 70%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/nsgl_context.m.o
[ 75%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/egl_context.c.o
[ 80%] Building C object lib/glfw/src/CMakeFiles/glfw.dir/osmesa_context.c.o
[ 85%] Linking C static library libglfw3.a
[ 85%] Built target glfw
[ 95%] Building CXX object CMakeFiles/ffmpeg_01.dir/src/main.cpp.o
[ 95%] Building CXX object CMakeFiles/ffmpeg_01.dir/src/load_frame.cpp.o
[100%] Linking CXX executable ffmpeg_01
clang: error: no such file or directory: 'VideoToolBox'
clang: error: no such file or directory: 'CoreFoundation'
clang: error: no such file or directory: 'CoreMedia'
clang: error: no such file or directory: 'CoreVideo'
clang: error: no such file or directory: 'CoreServices'
clang: error: no such file or directory: 'OpenGL'
clang: error: no such file or directory: 'CoreImage'
clang: error: no such file or directory: 'AppKit'
clang: error: no such file or directory: 'Foundation'
clang: error: no such file or directory: 'CoreAudio'
clang: error: no such file or directory: 'AVFoundation'
clang: error: no such file or directory: 'CoreGraphics'
make[2]: *** [ffmpeg_01] Error 1
make[1]: *** [CMakeFiles/ffmpeg_01.dir/all] Error 2
make: *** [all] Error 2

这是我的* libavcodec.pc 文件内容,它具有 conflicts:条目,其中列出了clang找不到的所有项目,我不知道不知道这些链接是否以某种方式链接。我发现有消息来源指出,如果我还有其他ffmpeg分支,也会出现类似错误,但我没有。

prefix=/usr/local
exec_prefix=${prefix}
libdir=/usr/local/lib
includedir=/usr/local/include

Name: libavcodec
Description: FFmpeg codec library
Version: 58.108.100
Requires: libswresample >= 3.8.100,libavutil >= 56.60.100
Requires.private: 
Conflicts:
Libs: -L${libdir}  -lavcodec -liconv -lm -llzma -lz -framework AudioToolBox -L/usr/local/Cellar/x264/r3011/lib -lx264 -pthread -framework VideoToolBox -framework CoreFoundation -framework CoreMedia -framework CoreVideo -framework CoreServices
Libs.private: 
Cflags: -I${includedir}

我没有cmakefile的经验,可以根据需要将其粘贴到此处。 非常感谢您的帮助,因为过去几天我一直受困。

我有两个CMakeList:

cmake_minimum_required(VERSION 3.17)
project(ffmpeg_01)

set(CMAKE_CXX_STANDARD 14)

add_subdirectory(lib/glfw)
add_subdirectory(lib/FFmpeg)

add_deFinitions(-DGL_SILENCE_DEPRECIATION)

if(APPLE)
    list(APPEND EXTRA_LIBS
            "-framework OpenGL"
            )
elseif(LINUX)
    list(APPEND EXTRA_LIBS
            "-lGL -lglu -lX11")
endif()

add_executable(ffmpeg_01 src/main.cpp src/load_frame.cpp)
target_link_libraries(ffmpeg_01 FFmpeg glfw ${EXTRA_LIBS})

以及FFmpeg子目录下的FFmpeg界面:

cmake_minimum_required(VERSION 3.17)
project(FFMPEG)

find_package(PkgConfig required)

pkg_check_modules(AVCODEC    required IMPORTED_TARGET libavcodec)
pkg_check_modules(AVFORMAT   required IMPORTED_TARGET libavformat)
pkg_check_modules(AVFILTER   required IMPORTED_TARGET libavfilter)
pkg_check_modules(AVDEVICE   required IMPORTED_TARGET libavdevice)
pkg_check_modules(AVUTIL     required IMPORTED_TARGET libavutil)
pkg_check_modules(SWRESAMPLE required IMPORTED_TARGET libswresample)
pkg_check_modules(SWSCALE    required IMPORTED_TARGET libswscale)

add_library(FFmpeg INTERFACE IMPORTED GLOBAL)

target_link_libraries(FFmpeg INTERFACE PkgConfig::AVCODEC)
target_link_libraries(FFmpeg INTERFACE PkgConfig::AVFORMAT)
target_link_libraries(FFmpeg INTERFACE PkgConfig::AVFILTER)
target_link_libraries(FFmpeg INTERFACE PkgConfig::AVDEVICE)
target_link_libraries(FFmpeg INTERFACE PkgConfig::AVUTIL)
target_link_libraries(FFmpeg INTERFACE PkgConfig::SWRESAMPLE)
target_link_libraries(FFmpeg INTERFACE PkgConfig::SWSCALE)

我还尝试在target_link_libraries下添加以下代码块,但编译结果没有区别:

target_link_options(FFmpeg INTERFACE
        ${AVCODEC_LDFLAGS_OTHERS}
        ${AVFORMAT_LDFLAGS_OTHERS}
        ${AVFILTER_LDFLAGS_OTHERS}
        ${AVDEVICE_LDFLAGS_OTHERS}
        ${AVUTIL_LDFLAGS_OTHERS}
        ${SWRESAMPLE_LDFLAGS_OTHERS}
        ${SWSCALE_LDFLAGS_OTHERS}
        )

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...