- 本帖最后由 sosoayaen 于 2013-5-14 16:01 编辑 *
iOS的我这里编译过了,针对的是官方的2.0.21-stable,具体是看了OnionBroswer的libevent编译部分,可以参考这里:
https://github.com/mtigas/iOS-OnionBrowser/blob/master/build-libevent.sh
首先下载libevent的库文件,如果是官方的2.0.21的话,会自带configure文件,如果是git上的那个for Android的版本,则要先运行目录下的autogen.sh文件,生成configure。其间可能需要安装automake、autoconf、libtool等工具,这个直接下载源码后,在其目录下执行以下命令
./configure && make
sudo make install
我这里的Xcode是4.3.1版本的,对应的SDK是6.0。然后编写一个build_libevent.sh(这个可以参考下开始的链接)文件,循环编译3个CPU类型的库文件:i386,armv7a和armv7s,分别对应模拟器和真机的两种CPU。
做了下小修改,可以看这里的build_libevent.sh内容:
SDKVERSION="6.0"
ARCHS="i386 armv7 armv7s"
DEVELOPER="/Users/JasonTou/Desktop/Xcode.app/Contents/Developer"
DIRS=$(pwd)
INTERDIR="${DIRS}/../built"
OUTPUTDIR="${DIRS}/../"
mkdir -p ${INTERDIR}
mkdir -p ${OUTPUTDIR}/lib
mkdir -p ${OUTPUTDIR}/include
for ARCH in ${ARCHS}
do
if "${ARCH}" == "i386" ];
then
PLATFORM="iPhoneSimulator"
EXTRA_CONFIG=""
else
PLATFORM="iPhoneOS"
EXTRA_CONFIG="--host=arm-apple-darwin11"
fi
mkdir -p "${INTERDIR}/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
./configure --disable-shared --enable-static --disable-debug-mode ${EXTRA_CONFIG}
--prefix="${INTERDIR}/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
CC="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/usr/bin/gcc -arch ${ARCH}"
LDFLAGS="$LDFLAGS -L${OUTPUTDIR}/lib"
CFLAGS="$CFLAGS -I${OUTPUTDIR}/include -isysroot ${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk"
CCPFLAGS="$CCPFLAGS -I${OUTPUTDIR}/include -isysroot ${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk"
make
make install
make clean
done
讲下要注意的地方。交叉编译使用的gcc是在Xcode中的,我这里是指定了绝对路径,相对路径会报错。
结束后对应的库会安装到父文件夹的built目录中,分别在iPhoneSimulator60-i386.sdk、iPhoneOS60-armv7.sdk和iPhoneOS60-armv7s.sdk的lib目录中。
1059