如何使用Android NDK 工具链编译openssl
程序员文章站
2022-03-05 12:13:23
...
1、gcc 的sysroot 选项
sysroot 选项设定 gcc 在编译源码的时候,寻找头文件和库文件的根目录。可以这样调用 gcc --sysroot=/tmp/gcc-arm (及其他选项)。NDK 根目录下的 platforms 目录中的各个子目录的路径都可以直接传给 gcc --sysroot=<dir>。为了简化操作,可以在linux系统的命令终端执行以下命令,设置SYSROOT 环境变量,$NDK是ndk的根目录。
NDK/platforms/android-8/arch-arm
2、ndk编译
$NDK/build/tools/make-standalone-toolchain.sh –platform=android-21 –install-dir=/tmp/my-android-toolchain [ –arch=x86 ]
将会在/tmp/my-android-toolchain 中创建 sysroot 环境和 工具链。--arch 选项选择目标程序的指令架构,默认是为 arm。
如果不加 --install-dir 选项,则会创建 /tmp/ndk/<toolchain-name>.tar.bz2。
(执行 make-standalone-toolchain.sh --help 查看帮助。)
运行之后,这样使用:
$ export PATH=/tmp/my-android-toolchain/bin:$PATH
$ export CC=arm-linux-androideabi-gcc
$ export CXX=arm-linux-androideabi-g++
$ export CXXFLAGS="-lstdc++"
执行完以上设置环境变量的命令之后,就可以直接编译了(例如,执行 ./configure 然后 make 得到的就是 arm 程序了)。不用再设定 sysroot, CC 了。而且,可以使用 STL,异常,RTTI。
问题:如何使用交叉编译工具链编译openssl
1、按照上述步骤设置编译工具为arm-linux-androideabi-gcc
2、由于编译openssl[openssl-1.0.2k]需要指定平台,首先需要配置平台
./Configure android-armv7
3、make [编译]
4、make install [将目标文件安装到指定的目录下]