我正在编写一个链接到 ffmpeg 开发库的程序,并且一切在 ubuntu-22-x86-64 ubuntu-24-x86-64 macos-13-x86-64 上都能正常工作,但在 macos-14-arm-m1 上却不能。
我使用
brew install ffmpeg
安装 ffmpeg,然后运行以下命令:
cc -fPIC -I/opt/homebrew/Cellar/erlang/26.2.5/lib/erlang/erts-14.2.5/include -Ic_src/xav -shared -undefined dynamic_lookup c_src/xav/xav_nif.c c_src/xav/reader.c c_src/xav/decoder.c c_src/xav/utils.c -o /Users/runner/work/xav/xav/_build/test/lib/xav/priv/libxav.so -lavcodec -lswscale -lavutil -lavformat -lavdevice -lswresample
导致
In file included from c_src/xav/xav_nif.c:1:
c_src/xav/decoder.h:1:10: fatal error: 'libavcodec/avcodec.h' file not found
#include <libavcodec/avcodec.h>
^~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from c_src/xav/reader.c:1:
c_src/xav/reader.h:1:10: fatal error: 'libavcodec/avcodec.h' file not found
#include <libavcodec/avcodec.h>
^~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from c_src/xav/decoder.c:1:
c_src/xav/decoder.h:1:10: fatal error: 'libavcodec/avcodec.h' file not found
#include <libavcodec/avcodec.h>
^~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from c_src/xav/utils.c:1:
c_src/xav/utils.h:2:10: fatal error: 'libavcodec/avcodec.h' file not found
#include <libavcodec/avcodec.h>
^~~~~~~~~~~~~~~~~~~~~~
当我找到头文件和动态库并设置 C_INCLUDE_PATH、LD_LIBRARY_PATH 等时,编译可以工作,但我认为不需要这样做,不是吗?
我的理解是,如果我使用某些包管理器安装 ffmpeg,ffmpeg 头文件和 .dylib 或 .so 应该可以自动搜索(只要包管理器的安装脚本中没有错误)。这是正确的吗?
相同的命令适用于 macos-13-intel-x86-64
您可以在 Macos/Intel 上运行:
ls -ld /usr/local/include/libavcodec
lrwxr-xr-x 1 me staff 41 16 Jul 23:42 /usr/local/include/libavcodec -> ../Cellar/ffmpeg/7.0.1/include/libavcodec
但是在Macos/m1上运行
/usr/local/include/libavcodec
后brew install ffmpeg
不存在