nkd 编译ffmpeg错误: clang is unable to create an executable file. C compiler test failed.

用最新的ndk(21.1)编译新的ffmpeg(4.1)  网上找了个编译脚本然后一运行就报上面的错误,找了n多篇也没搜罗到解决办法,有一种大部分人都在问这个问题但是就是没有解决方案的不明觉厉,发帖的发帖,但是没人回答,回答问题的也多数是水文,风马牛不相及,视乎还有一部分根本没有发现这个问题,上来都是贴编译脚本,报这种错?好像从来不会有这这回事?不过我现在终于解决了,blog一下:
我的环境出现这个问题是,编译配置脚本上多了一个行配置: 
--cpu=$CPU 
CPU=arm64-v8a
因为这个--cpu的参数导致问题。正确的写法是 
#32bit
ARCH=arm
CPU=armv7-a
#或者64bit
ARCH=arm64
CPU=armv8-a
可以直接在 configure中搜索找到答案:


下面啰嗦一下对这种问题的看法,知其然知其所以然
网上最多的关于ndk编译ffmpeg的方法,基本是一个模子,写一个shell脚本,里面一个shell脚本函数调用源码里面的configure进行配置,配置参数里面设置交叉编译器,最后编译。
上诉问题就是configure配置报错,configure就是ffmpeg源码里面的配置脚本,会进行各种参数环境检查,然后更具配置的参数生成Makfile文件。现在就是环境检查的时候出错了,指定的编译器 无法工作。。。
1.0 ls 一下上面报错出来的 cc工具路径,是不是clang路径设置错误,真的没这个文件, 或者没有可执行权限。
2.0 没法子,硬生生地去configure脚本里面找这个报错的源头,理解它检查环境的具体工作流程----太难了, 去看这个configure脚本。。。。。。。  其实它报错的时候已经提示:

If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net. Include the log file "ffbuild/config.log" produced by configure as this will help solve the problem

the log file ffbuild/config.log  produced by configure 
配置会生成日志文件,官方都是通过这个来协助解决问题的,我们也可以看看


这里已经详细指出问题,clang compiler does not support '-mcpu=arm64-v8a'
可以看到上面 还有其他的过程,比如 创建临时工作的目录 mktemp ,有些博文里面关于这个问题就有一种方式就是 之地TEMP 参数,可能是环境的问题导致这里mktemp无法创建temp目录,还有的博文是解决 test_ld  ld连接工具错误的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值