我编译了支持iOS 7和8的FFMPEG库,但是自从最近发布iOS 9以来,已经发布了一个名为bitcode模式的新功能,作为默认设置,此设置已设置为NO.
但如果我将其设置为是,则会执行以下错误,
libavdevice.a(avfoundation.o)'不包含bitcode.您必须在启用bitcode(Xcode设置ENABLE_BITCODE)的情况下重建它,从供应商处获取更新的库,或禁用此目标的bitcode.对于架构arm64
有没有办法编译在bitcode启用模式下支持FFMpeg的FFMPEG
这是我使用的构建脚本
#!/bin/sh
# directories
SOURCE="ffmpeg-2.6.2"
FAT="FFmpeg-iOS"
SCRATCH="scratch"
# must be an absolute path
THIN=`pwd`/"thin"
# absolute path to x264 library
#X264=`pwd`/fat-x264
#FDK_AAC=`pwd`/fdk-aac/fdk-aac-ios
CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs \
--disable-doc --enable-pic"
if [ "$X264" ]
then
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264"
fi
if [ "$FDK_AAC" ]
then
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-libfdk-aac"
fi
# avresample
#CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avresample"
ARCHS="arm64 armv7 x86_64 i386"
COMPILE="y"
LIPO="y"
DEPLOYMENT_TARGET="6.0"
if [ "$*" ]
then
if [ "$*" = "lipo" ]
then
# skip compile
COMPILE=
else
ARCHS="$*" …Run Code Online (Sandbox Code Playgroud) 我们正在在线分发iOS软件模块.因为,Apple正在倡导bitcode甚至强制某些设备上的应用程序(watchOS/tvOS) - 迫使我们用bitcode提供这个软件模块(静态库).
关注的是bitcode如何安全地从任何人进行逆向工程和反编译(如java字节码)以及如何防范它?任何人都可以轻松地从网站下载库并从中提取bitcode(IR)并进行反编译.这里有一些有价值的信息
https://lowlevelbits.org/bitcode-demystified/
Bitcode可能不会关注应用程序,因为苹果会剥离它,但肯定似乎是静态库的一个问题.
任何见解?
我想知道是否可以让 LLVMopt工具详细报告在每个优化级别(如-O1、-O2等)期间成功使用了哪些优化通道。
例如,这是文件的简单位码foo.bc:
define dso_local i32 @main() #0 {
%1 = alloca i32, align 4
%2 = alloca i32, align 4
%3 = alloca i32, align 4
store i32 0, i32* %1, align 4
store i32 1, i32* %2, align 4
store i32 1, i32* %3, align 4
%4 = load i32, i32* %2, align 4
ret i32 %4
}
Run Code Online (Sandbox Code Playgroud)
这是运行后获得的bitcodeopt -O1 foo.bc -o foo.opt.bc
; Function Attrs: noinline norecurse nounwind …Run Code Online (Sandbox Code Playgroud) 昨天我将MacBook Pro更新为El Capitan.我有Xcode 6.1更新Xcode不会打开,Xcode 6.1但我Xcode 7.0.1强行下载我不想升级,但我被迫.我用Objective-C创建了我的应用程序.提交给苹果,它目前正在"等待开发者发布".
我想改变一些东西,但现在无处不在,Xcode 7.0.1我得到了一个我从未收到过的错误Xcode 6.1.
ld: '/Users/markjak/Desktop/Stick Down copy/Leap Up/LibAdapterIAd- 1.0.0/libAdapterIAd.a(GADMAdapterIAdInterstitial.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我如何做Xcode 7.0.1要我做的事情?
使用 XCode 9.2,我收到 ld 错误:
ld: -bundle 和 -bitcode_bundle(Xcode 设置 ENABLE_BITCODE=YES)不能一起使用
但是,我的构建选项不包含启用位码的任何条目,当我尝试通过搜索栏找到它时,我什么也没找到。
如何设置 ENABLE_BITCODE=NO ?而且,知道为什么它不显示吗?
谢谢。
我有一个 pod 项目,其中包含一个演示 pod 用法的示例。在示例和 Pod 目标上,位码启用设置均设置为 yes。以下是示例的Podfile:
use_frameworks!
platform :ios, '10.0'
target 'MyPod_Example' do
pod 'MyPod', :path => '../'
target 'MyPod_Tests' do
inherit! :search_paths
end
end
Run Code Online (Sandbox Code Playgroud)
该示例应用程序在模拟器上运行良好,但是当尝试在 iPhone 6S 上运行它时,我收到以下构建错误:
ld:-bundle 和 -bitcode_bundle(Xcode 设置 ENABLE_BITCODE=YES)不能一起使用 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)。
我该如何解决?我的另一个项目有相同的 pod,但从其存储库下载 pod 在 iPhone 上运行良好,并且启用了位码。下面显示了可以运行的应用程序的 Podfile 结构:
source '<my pod spec repo>'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
target 'MyPodTest' do
use_frameworks!
# Pods for MyPodTest
pod 'MyPod'
target 'MyPodTestTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyPodTestUITests' …Run Code Online (Sandbox Code Playgroud) XMPP框架错误
ld:'xmppFrameWork/Vendor/libidn/libidn.a(stringprep.o)'不包含bitcode.您必须在启用bitcode(Xcode设置ENABLE_BITCODE)的情况下重建它,从供应商处获取更新的库,或禁用此目标的bitcode.对于架构arm64
注意:仅在iPhone设备中运行应用程序时出错.(它在模拟器中工作).