debugly / ijkplayer

【持续更新】macOS/iOS video player based on ijkplayer, using FFmpeg 5.1, support Metal、hw accel、HDR、ass subtitle effect...
GNU General Public License v2.0
69 stars 14 forks source link

iOS代码编译时报错instruction requires: dotprod #15

Closed applicationHe closed 1 month ago

applicationHe commented 2 months ago

Macbook M2芯片 执行./compile-any.sh build all 报错如下:

:11:1: error: instruction requires: dotprod udot v0.4s, v4.166, v16.16b ^ error: cannot compile inline asm :13:1: error: instruction requires: dotprod udot v2.4s, V6. 16b, V16.16b ^ error: cannot compile inline asm :14:1: error: instruction requires: dotprod udot v3.4s, v7.16b,V16.16b
debugly commented 2 months ago

我在M1上无法复现这个问题,参考下这个 issue 吧:https://github.com/official-stockfish/Stockfish/issues/4408

criswonder commented 1 month ago

求助,我也有这个问题,错误日志如下。多谢帮忙看下要怎么解决或者是提供什么信息 === [./do-compile/libyuv.sh] check env begin=== XC_ARCH:arm64 XC_BUILD_SOURCE:/Users/andy/source/personal/github-projects/ijkplayer_debugly/shell/apple/../build/src/ios/libyuv-arm64 XC_BUILD_NAME:libyuv-arm64 XC_DEPLOYMENT_TARGET:-miphoneos-version-min=11.0 XCRUN_SDK_PATH:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.2.sdk XC_BUILD_PREFIX:/Users/andy/source/personal/github-projects/ijkplayer_debugly/shell/apple/../build/product/ios/libyuv-arm64 THREAD_COUNT:8 XC_OPTS: ===check env end=== [*] cross compile, on arm64 compile ios arm64. CC: xcrun -sdk iphoneos clang CXX: xcrun -sdk iphoneos clang++ CFLAGS: -arch arm64 -miphoneos-version-min=11.0 -fembed-bitcode -Os -fomit-frame-pointer -Iinclude/ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.2.sdk


[*] configurate libyuv


[*] compile libyuv

:14:1: error: instruction requires: dotprod udot v4.4s, v0.16b, v6.16b ^ error: cannot compile inline asm :15:1: error: instruction requires: dotprod udot v5.4s, v1.16b, v6.16b ^ error: cannot compile inline asm :10:1: error: instruction requires: dotprod udot v4.4s, v0.16b, v0.16b ^ error: cannot compile inline asm :11:1: error: instruction requires: dotprod udot v5.4s, v1.16b, v1.16b ^ error: cannot compile inline asm 4 errors generated. make: *** [source/compare_neon64.o] Error 1 make: *** Waiting for unfinished jobs.... ➜ ios git:(latest) ✗ sysctl -a | grep machdep.cpu machdep.cpu.cores_per_package: 8 machdep.cpu.core_count: 8 machdep.cpu.logical_per_package: 8 machdep.cpu.thread_count: 8 machdep.cpu.brand_string: Apple M2
debugly commented 1 month ago

我这里使用Xcode15.3 编译 libyuv 也出错了,不过和你那不一样;修改编译脚本之后,我这可以编译出libyuv了,你拉取最新代码先clean, 然后重新编译下试试。

zdw19840929 commented 1 month ago

@debugly 大佬看下编译libyuv的时候我也报错了,拉的是最新的脚本,XCode15.3 截屏2024-05-13 23 37 26

debugly commented 1 month ago

这个问题,我猜测是新版本Xcode或者Clang的bug,目前还没有完全定位问题,我给大家提供个方案,直接下载我预编译好的库,不要自己编译,ijk用到的三方库都可以在这里找到预编译版本:

https://github.com/debugly/MRFFToolChainBuildShell/tags

1、如果没有修改源码,不要编译这些库,浪费时间! 直接安装到本地使用就行:

cd shell 
#安装iOS和macOS平台所有的依赖库
./install-pre-any.sh all all
#安装iOS平台所有的依赖库
./install-pre-any.sh ios all
#安装macOS平台所有的依赖库
./install-pre-any.sh macos all

根据开发的平台安装就行。我写的脚本都很灵活,参数多种多样,这里不介绍了, 感兴趣的可以到 https://github.com/debugly/MRFFToolChainBuildShell/ 这里看下。

2、如果不修改ijk的源码,直接下载预编译好的 framework 放进工程就行:

https://github.com/debugly/ijkplayer/releases

zdw19840929 commented 1 month ago

感谢大佬的回复,用上面的方法已经可以顺利编译了 @debugly

huaibaobao2017 commented 3 weeks ago

同样的报错。大佬能编译一个支持samba的版本吗?

debugly commented 3 weeks ago

实际上当前没有使用libyuv,可以不用编译它。 正在测试即将发布的版本,没有时间帮你编译samba呢。