1、区别本地编译与交叉编译
本地编译:在当前编译平台下编译出来的程序只能在当前平台下运行。比如,我们在 x86 平台上,编写程序并编译成可执行程序。这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台本身的可执行程序,这个编译过程称为本地编译。
交叉编译:在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序。比如,我们在 x86 平台上,编写程序并编译成能运行在 ARM 平台的程序,编译得到的程序在 x86 平台上是不能运行的,必须放到 ARM 平台上才能运行。
2、交叉编译在iOS中应用
当编译iOS库时,用到的第三方静态库不是iOS平台的,因此需要自己编译静态库使用。下载第三库的源码,然后解压,之后把下面的脚本文件放在源码解压后的目录,然后执行这个脚本(这个脚本是在网上查找到的,做的很不错)。最后生成会生成fat-libtool和thin-libtool目录,fat-libtool下面是所有iOS使用的平台合成一个静态库。如果不需要每个平台都集成,那么可以选择thin-libtool下面相应平台的静态库就可以了。
#!/bin/sh
make distclean
CONFIGURE_FLAGS="--disable-shared --disable-frontend"
ARCHS="arm64 armv7s x86_64 i386 armv7"
# directories
# SOURCE是下载的第三方库源码包,解压后的目录,可以把sh脚本放到这个目录,source改为""
SOURCE=""
# FAT是所有指令集build后,输出的目录,所有静态库被合并成一个静态库
FAT="fat-libtool"
# SCRATCH是下载源码包,解压后的目录
SCRATCH="./"
# must