iOS:装了xcode4之后会发现命令行上的gcc居然没有,其实它被封装在xcrun gcc命令里了,所以配置参数为:
android:安卓上stl不是做为个系统内置标准库,而像是个第三方库一样提供,如果是编译c++程序,要记得单独为它指定位置。另外,我编android程序的时候,习惯是重写CC、CXX这些环境变量并导出,然后简单的调configuare,免得带一堆长长的参数:
#!/usr/bin/bash
export SYSROOT="H:/andk/platforms/android-9/arch-arm"
export CC="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-gcc.exe --sysroot=$SYSROOT"
export CXX="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-g++.exe --sysroot=$SYSROOT -Ih:/andk/sources/cxx-stl/gnu-libstdc++/include"
export AR="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-ar.exe --sysroot=$SYSROOT"
每次要交叉编译时,先source一下上面这个脚本,之后就直接./configure –host=arm-eabi了。
另外提一下,为什么iOS的CFLAGS要指定-arch=armv6而android不用?因为android的用于各个架构的编译器是分离的,放在各自的目录中,如toolchains/arm-linux-androideabi-4.4.3就是专用于arm的,其它x86、mips等都有对应的一套。而iOS的xcrun gcc实际上支持真机arm和模拟器x86两种,所以它需要额外指定目标架构。
========================================
另外,luajit的编译比较特殊,它没有configuare,全是在makefile里搞定配置。
所以编iOS时的命令为:
ISDK=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
ISDKVER=iPhoneOS5.1.sdk
ISDKP=$ISDK/usr/bin/
ISDKF="-arch armv6 -isysroot $ISDK/SDKs/$ISDKVER"
make HOST_CC="gcc -m32 -arch i386" CROSS=$ISDKP TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS TARGET=arm
编android时:
make CROSS=/cygdrive/h/andk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi- TARGET_FLAGS=--sysroot=H:/andk/platforms/android-9/arch-arm TARGET_SYS=Linux TARGET=ARM
495



被折叠的 条评论
为什么被折叠?



