Gmssl 各平台编译方法绝对可用
Posted 张志翔 ̮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gmssl 各平台编译方法绝对可用相关的知识,希望对你有一定的参考价值。
最近工作上需要在不同平台上使用SM2、SM4算法,所以需要在不同平台上进行编译Gmssl库,下面是我总结的编译命令。
1、arm-himix200-linux(himix200芯片)
gmssl动态链接库编译,代码如下:
目录:GmSSL-master
$ ./Configure --prefix=/home/qli/libopenssl --cross-compile-prefix=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux- no-asm shared linux-armv4 -march=armv7-a -D__ARM_MAX_ARCH__=7
$ make -j4
项目编译,代码如下:
目录:device-authentication
mkdir build
cd mkdir
cmake -DCMAKE_C_COMPILER=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc -DCMAKE_CXX_COMPILER=/opt/hisi-linux/x86- arm/arm-himix200-linux/bin/arm-himix200-linux-g++ ..
make -j4
2、arm64
目录:GmSSL-master
$ sudo ./config -DGMSSL_NO_TURBO no-afalgeng
$ make -j4
3、windows64
安装ActivePerl和Visual Studio,以管理员身份打开Visual Studio Tools下的Developer Command Prompt控制台并运行:
目录:GmSSL-master
$ perl Configure VC-WIN64A
$ nmake
$ nmake install
下面是一些常见的编译错误及原因:
- 安装最新的Visual Studio版本,不要使用Visual C++ 6、Visual Studio 2008。
- 确保从一份干净的(没有已经编译出来的对象文件或汇编文件)最新Master分支源代码开始编译。
- 编译系统没有找到
nmake
。实际上nmake
是Visual Studio自带的工具,不需要单独安装。编译系统无法找到nmake
的原因是没有在Visual Studio的命令行环境下执行编译指定。 - 无法执行
nmake install
。这个命令需要以管理员的身份执行。 - 对象文件(
.obj
)和目标平台不一致,通常是由于在Visual Studio的32位控制台下执行perl Configure VC-WIN64A
;或者在Visual Studio的64位控制台下执行perl Configure VC-WIN32
导致的。
4、Linux64
目录:GmSSL-master
$ ./config
$ make -j4
$ make test
$ sudo make install
5、Android
android-v7
#!/bin/bash
ANDROID_PATH=/usr/local/ndk/android-ndk-r14b
PLATFORM_VERSION=21
MAKE_TOOLCHAIN=$ANDROID_PATH/build/tools/make-standalone-toolchain.sh
export TOOLCHAIN_PATH=$ANDROID_PATH/android-toolchain-arm
$MAKE_TOOLCHAIN --arch=arm --platform=android-$PLATFORM_VERSION --install-dir=$TOOLCHAIN_PATH
export MACHINE=armv7
export SYSTEM=android-v7
export ARCH=arm
export CROSS_SYSROOT=$TOOLCHAIN_PATH/sysroot
export TOOL_BASENAME=$TOOLCHAIN_PATH/bin/arm-linux-androideabi
export CC=$TOOL_BASENAME-gcc
export CXX=$TOOL_BASENAME-g++
export LD=$TOOL_BASENAME-ld
export LINK=$CXX
export AR=$TOOL_BASENAME-ar
export RANLIB=$TOOL_BASENAME-ranlib
export STRIP=$TOOL_BASENAME-strip
../../config
make -j4
android-v8
#!/bin/bash
ANDROID_PATH=/usr/local/ndk/android-ndk-r14b
PLATFORM_VERSION=21
MAKE_TOOLCHAIN=$ANDROID_PATH/build/tools/make-standalone-toolchain.sh
export TOOLCHAIN_PATH=$ANDROID_PATH/aarch64-linux-android
$MAKE_TOOLCHAIN --arch=arm64 --platform=android-$PLATFORM_VERSION --install-dir=$TOOLCHAIN_PATH
export MACHINE=armv8
export SYSTEM=android-v8
export ARCH=arm64
export CROSS_SYSROOT=$TOOLCHAIN_PATH/sysroot
export TOOL_BASENAME=$TOOLCHAIN_PATH/bin/aarch64-linux-android
export CC=$TOOL_BASENAME-gcc
export CXX=$TOOL_BASENAME-g++
export LD=$TOOL_BASENAME-ld
export LINK=$CXX
export AR=$TOOL_BASENAME-ar
export RANLIB=$TOOL_BASENAME-ranlib
export STRIP=$TOOL_BASENAME-strip
../../config
make -j4
我目前只在5个平台用到SM2、SM4算法,上面这几种编译Gmssl库的方式绝对可用。
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系以上是关于Gmssl 各平台编译方法绝对可用的主要内容,如果未能解决你的问题,请参考以下文章
Gmssl与Openssl版本兼容安装方式,解决gmssl安装后,openssl无法使用的问题
用vs2012、active perl、nasm、GmSSL-master搭建平台时,nmake时报如下错误,求帮助,谢谢!