Ijkplayer: ffmpeg ios build failed

Created on 2 Apr 2018  ·  15Comments  ·  Source: bilibili/ijkplayer

When ./compile-ffmpeg.sh all
It will get below error.

./libavutil/attributes.h:94:49: note: expanded from macro 'attribute_deprecated'

define attribute_deprecated __attribute__((deprecated))

                                            ^

CC libavcodec/aac_parser.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
CC libavcodec/aacadtsdec.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
CC libavcodec/aacdec.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
CC libavcodec/aacps_float.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
CC libavcodec/aacpsdsp_float.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
5 warnings generated.
CC libavcodec/aacsbr.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
CC libavcodec/aactab.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
CC libavcodec/ac3tab.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
CC libavcodec/allcodecs.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
CC libavcodec/arm/aacpsdsp_init_arm.o
clang: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7' [-Wignored-optimization-argument]
AS libavcodec/arm/aacpsdsp_neon.o
./libavutil/arm/asm.S:50:9: error: unknown directive
.arch armv7-a
^
make: * [libavcodec/arm/aacpsdsp_neon.o] Error 1
make: *
Waiting for unfinished jobs....

Most helpful comment

@Shvier
I do same thing like you.
I remove the armv7 in compile-ffmpeg.sh
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"

Thanks for your reply.

All 15 comments

@wisenight I met the same problem.
In iOS devices, armv7 means iPhone 4 or iPad 1 and so on, armv7s meas iPhone 5 and so on, all it's 32 bit device. And Apple has required all apps should run on 64 bit.
So I just compiled arm64 and armv7s. The iPhone 4 or iPhone 5 is too old for our apps or Foundation/UIKit API.

If there's any mistake or any better solution, please tell me.

@Shvier
I do same thing like you.
I remove the armv7 in compile-ffmpeg.sh
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"

Thanks for your reply.

I can confirm that you upgraded the system today and upgraded xcode, so that's the problem.

I has the same error,as I upgraded the system and xcode

I met the same problem

  1. download xcode 9.1
  2. sudo xcode-select -s pathToXcode9.1/Contents/Developer
  3. ./compile-ffmpeg.sh clean
  4. ./compile-ffmpeg.sh all
    best wishes.

上面的老哥说的对,完美.

Solved:
use this: https://github.com/anmolagar/ijkplayer until PR is accepted

@wisenight Does not compiling the armv7 will not be a problem?

./libavutil/arm/asm.S:50:9: error: unknown directive
.arch armv7-a
^
make: * [libavcodec/arm/aacpsdsp_neon.o] Error 1
make: *
Waiting for unfinished jobs....

莫非真要删除掉armv7?

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-asm"
fixed for me

vim ios/tools/do-compile-ffmpeg.sh

add FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --disable-asm"

 # armv7, armv7s, arm64
 FFMPEG_CFG_FLAGS_ARM=
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --enable-pic"
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --enable-neon"
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --disable-asm"

vim ios/tools/do-compile-ffmpeg.sh

add FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --disable-asm"

 # armv7, armv7s, arm64
 FFMPEG_CFG_FLAGS_ARM=
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --enable-pic"
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --enable-neon"
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --disable-asm"

MacOS 10.15.3, Xcode 11.3.1 is invalid

vim ios/tools/do-compile-ffmpeg.sh
add FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --disable-asm"

 # armv7, armv7s, arm64
 FFMPEG_CFG_FLAGS_ARM=
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --enable-pic"
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --enable-neon"
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --disable-asm"

MacOS 10.15.3, Xcode 11.3.1 is invalid

Hi Zeaa, after these modifies , you also need rebuild openssl module.
try this step. it works for me . MacOS 1015.4, XCode 11.3 (11C29)

./init-ios-openssl.sh
./compile-openssl.sh clean
./compile-ffmpeg.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh all

vim ios/tools/do-compile-ffmpeg.sh
add FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --disable-asm"

 # armv7, armv7s, arm64
 FFMPEG_CFG_FLAGS_ARM=
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --enable-pic"
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --enable-neon"
 FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --disable-asm"

MacOS 10.15.3, Xcode 11.3.1 is invalid

Hi Zeaa, after these modifies , you also need rebuild openssl module.
try this step. it works for me . MacOS 1015.4, XCode 11.3 (11C29)

./init-ios-openssl.sh
./compile-openssl.sh clean
./compile-ffmpeg.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh all

In macOS 11.0.1 Xcode Version 12.2 it is not working after trying all the commands listed.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

launam picture launam  ·  3Comments

ZINK-FU picture ZINK-FU  ·  3Comments

MRsJackYang picture MRsJackYang  ·  4Comments

binaryxiaobao picture binaryxiaobao  ·  4Comments

liukuiqing picture liukuiqing  ·  3Comments