How to check if a framework is Bitcode supported for Xcode7
I have observed that __bitcode section is only present for static Libs and not for dynamic libs. So, one solution is the below command.
otool -l libDeviceManager.a | grep __LLVM
Also, sometimes with fat binaries otool may not give __LLVM segments even though they are present. You can use the following command for those cases
otool -arch armv7 -l libDeviceManager.framework/libDeviceManager | grep __LLVM
From this Apple Developers Forum discussion, user dshirley and bwilson suggest using command line tools otool
and grep
to check if bitcode sections exist.
$ otool -l libName.o | grep __LLVM
or
$ otool -l MyFramework.framework/Versions/A/MyFramework | grep __LLVM
Running the above command, if the library contains bitcode you will see segname __LLVM
output.
The accepted answer suggests you shall do grep __LLVM
but I'd rather do this
otool -l libName.o | grep __bitcode
as there are different __LLVM
segments and not all of these indicate the presence of Bitcode. Here's an example:
Section
sectname __bitcode
segname __LLVM
addr 0x00000000000007d0
size 0x0000000000000f10
offset 3360
align 2^4 (16)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __cmdline
segname __LLVM
addr 0x00000000000016e0
size 0x0000000000000069
offset 7216
align 2^4 (16)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
The presence of the __cmdline
Section does not indicate that Bitcode is present, yet it would also be found when just searching for __LLVM
.
you can try these commands:
otool -arch armv7 -l libDeviceManager.a | grep bit code
and
otool -arch arm64 -l libDeviceManager.a | grep bitcode