SSL

编译boringssl

boringssl源码树中的BUILDING.md专门有说如何编译,但它写的是用cmake。我们目的是要用IDE编译,即Windows下的Visual Studio,iOS下的XCode,Android下的NDK。

不管哪平台,编译boringssl需两部分文件,一部分从直接下载的源码包中就能得到,另一部分需要用configure生成。configure生成的又分若干汇编文件和err_data.c,好在至少Windows、iOS、Android,err_data.c内容是一样的。

为此要实现各平台在IDE下编译,终归是要解决两个问题:1)如何得到configure生成的文件,2)如何知道要编译哪些源文件。

 

一、Windows

需要预安装的应用

  • Perl,像activeperl。如果已安装depot_tools,但它自带的Perl版本有可能较老,最好到官网下载最新版本。老版本在把*.py转成汇编时会有问题。
  • Go。
  • CMake。

编译

运行CMake。

Where is the source code: 设置boringssl的源码树路径,像c:/ddksmaple/boringssl。

Where to build the binaries: 设置要生成的二进制文件存放路径,像c:/ddksmaple/boringssl/output。

单击“Configure”,如果是Visual Studio 2015,选择Visual Studio 14 2015。如果出现不能找到Go,那在Value手动设置go.exe路径。

以上都已成功,单击“Generate”。

至此在指定的“output”目录下就会有BoringSSL.sln,打开它,编译。

一旦编译结束,“output”下就会生成那些扩展名是.asm汇编文件,以及err_data.c。根据生成的*.o,就能得出Windows平台要编译哪些源文件。

[color=red]在windows,额外预定宏OPENSSL_NO_ASM(后面升级时或许可以先去掉,没问题就建议不要定义它)。定义该宏后是不是意味不需要编译那些*.asm了?——还没有确定答案,但至少不能编译bn-586.asm、co-586.asm,否则会出同一个函数有多个实现。[/color]

 

二、iOS

iOS不需要汇编文件,configure生成的就须要err_data.c,而这文件可直接从Windows复制。

 

三、Andorid

以下编译是在Mac OS X。

需要预安装的应用

  • Go。
  • CMake。
  • Andorid NDK for Mac OS X。最好用最新版本。

安装好CMake后,双击CMake执行是图形界面,编译boringssl需要在命令行。在图形界面的CMake执行菜单命令,“Tools”---“How to Install For Command Line Use”,会弹出个窗口,告诉你如何把cmake融入命令行。如下图。

运行“终端”,输入类似以下命令就可完成编译。

$ PATH="/Applications/CMake.app/Contents/bin":"$PATH"
$ cd boringssl
$ mkdir build
$ cd build
$ cmake -DCMAKE_TOOLCHAIN_FILE=../third_party/android-cmake/android.toolchain.cmake -DANDROID_NDK=/Users/ancientcc/android-ndk-r13b -DANDROID_NATIVE_API_LEVEL=18 -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="armeabi-v7a with NEON" ..
$ cmake --build .

<boringssl>/third_party/android-cmake/README.md有关于cmake命令中涉及到的几个宏的详细说明,这里再补充几点。

[*]ANDROID_NDK:NDK路径,这个路径建议用绝对路径,相对路径时可能会找不到NDK错误。

[*]ANDROID_NATIVE_API_LEVEL:要使用的API Level。新版boringssl需要用较新版本的NDK,像r10都是不行的,而较新NDK可能已经不支持较低的Level版本,像Level 8,可cmake默认的Level可能就是Level 8,这使得用最新NDK编译时会报找不到Level错。为此要显示定义ANDROID_NATIVE_API_LEVEL。

 

全部评论: 0

    写评论: