请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于libyuv Undefined symbols for architecture arm64

问题:
之前老师讲过yuv转码可以使用libyuv,我尝试着编译libyuv(macos m1)可以成功,生成了可执行文件,我的理解是既然编译成功了也就是源码底层所链接的库环境(库环境:操作系统支持)在我本地都应该存在,那么我尝试去使用libyuv 的源码进行开发demo,最后报错,内容如下:

Undefined symbols for architecture arm64:
  "_I420ToBGRA", referenced from:
      yuv_util::fmt() in yuv_util.cpp.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

这个错误我的理解是我调用I420ToBGRA函数链接的库,与我本地系统架构冲突了,那么我不明白为什么能编译成功呢?
ffmpeg 我也是按照您的方式编译了 也生成了可执行文件,源码也能进行demo开发,我不太理解这是为什么?

正在回答 回答被采纳积分+3

1回答

李超 2023-12-11 17:47:29

ffmpeg 没用libyuv, 你这是libyuv 可库没编译好吧,怎么还和ffmpeg联系上了?

0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎3278424 #1
    灵感主要来源于n12 转yuv420p那节课,课上提到libyuv库,尝试下载编译 然后demo阶段就出现了以上问题,我比较纠结的是,为什么编译可以成功生成可执行文件,那么源代码开发demo的时候,会出现symbol(s) not found for architecture arm64 这个错误,之所以能联想到ffmpeg是因为, 下载到使用ffmpeg的流程跟libyuv基本一致 我就按照这个思路去推理的
    回复 有任何疑惑可以回复我~ 2023-12-11 19:01:21
  • 李超 回复 提问者 慕虎3278424 #2
    通过你的描述我无法判断具体是啥原因。你可以到课程群里把你的编译环境和具体的操作步骤说一下,我在我的环境下操作一下,看看会不会出类似的问题,可能还有些问题要你补充
    回复 有任何疑惑可以回复我~ 2023-12-11 20:27:26
  • 提问者 慕虎3278424 回复 李超 #3
    老师我已经将demo放到github上去了 地址 git@github.com:shootingclub/yuv_util.git,开发工具clion,您有时间帮忙看下 readme 已经写明了具体的操作过程
    回复 有任何疑惑可以回复我~ 2023-12-12 10:58:11
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信