由于在AndroidArm架构下不方便编译一些库,所以经常使用交叉编译的方法,在Windows或者Linux下面编译用于嵌入式Arm架构的库文件.由于交叉编译时各种参数设置非常多,所以石博文写了一个基本通用的小脚本,用于快速配置一些参数,实际使用时,还需要按编译需求和系统环境作一些修改.
在Linux下交叉编译Android-Arm架构的库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #!/bin/bash # 架构 ARCH= "arm-linux" # android 目录 ROOT= /opt/android-ndk/platforms/android-9/arch-arm BASE_PATH=$ROOT /usr PREFIX= /opt/android-ndk/toolchains/arm-linux-androideabi-4 .8 /prebuilt/linux-x86_64/bin/arm-linux-androideabi export CC=$PREFIX-gcc export CXX=$PREFIX-g++ export LD=$PREFIX-ld export NM= "$PREFIX-nm -B" export AR=$PREFIX-ar export RANLIB=$PREFIX-ranlib export STRIP=$PREFIX-strip export OBJCOPY=$PREFIX-objcopy export LN_S= "ln -s" export CFLAGS= "-Wall -O2 -funroll-loops -I$BASE_PATH/include --sysroot=$ROOT" export CPPFLAGS= "-I$BASE_PATH/include --sysroot=$ROOT" export CXXFLAGS= "-I$BASE_PATH/include --sysroot=$ROOT" export LDFLAGS= "-L$BASE_PATH/lib --sysroot=$ROOT" . /configure --host=$ARCH --prefix=$ROOT /usr |
设置了上面这些变量后,执行configure脚本就会自动调整为交叉编译(如果这个库支持的话),当然,有些库的编译方式不是使用configure或者make,那就要手动来执行,不过参数的设置应该是差不多的.在configure脚本执行完成,没有错误后,就可以开始编译了:
1 | sudo make && make install |
由于设置了sysroot,所以这时install的目录就不是Linux系统的目录了,而是Android虚拟机的目录.