我使用以下配置为 Android 配置了 ffmpeg:
./configure --arch=arm --target-os=android --enable-cross-compile --cross-prefix=/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- --sysroot=/Android/Sdk/ndk-bundle/platforms/android-27/arch-arm --enable-gpl --cpu=cortex-a8
当我运行时make
,似乎无法找到 errno.h,因此出现以下错误:
CC libavdevice/alldevices.o
In file included from ./libavutil/avutil.h:296:0,
from ./libavutil/log.h:25,
from libavdevice/avdevice.h:48,
from libavdevice/alldevices.c:23:
./libavutil/common.h:33:19: fatal error: errno.h: No such file or directory
#include <errno.h>
^
compilation terminated.
make: *** [ffbuild/common.mak:60: libavdevice/alldevices.o] Error 1
尽管 errno.h 存在于我的系统上(在/usr/include
和 中) ,但还是会发生这种情况/usr/include/asm-generic
。我将 include 语句更改为libavutil/common.h
to #include "/usr/include/errno.h"
,现在无法找到另一个文件features.h
。有没有办法告诉 make 如何找到这些包含文件?
更新:
我忘记在最初的问题中包含并且可能很重要的是我在运行配置后收到的警告是:
WARNING: /Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-pkg-config not found, library detection may fail.
我在该目录中没有看到任何名为arm-linux-androideabi-pkg-config 的文件。我应该创建一个吗?
我还添加了另一个配置选项,sysinclude
如下所示:
--sysinclude=/Android/Sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi
但是,make仍然找不到errno.h