• 交叉编译 Crypto++


    交叉编译 Crypto++

    概述

    Crypto++ 是一个免费开源的 C++ 密码学库,由 Wei Dai(美籍华裔)首次开发,当前由 Crypto++ 项目团队维护,源代码在 github 上进行托管。

    下载

    开发版本(最新)

    如果以研究学习为目的,或者希望尝试最新特性,又或者希望参与到 Crypto++ 的开发中,可以直接从 github 上拉取最新源码,拉取命令:

    git clone https://github.com/weidai11/cryptopp.git
    
    • 1

    技巧:在 github 页面点击右上角的 Code 按钮获取 git clone 链接。

    发行版本

    如果以商用量产为目的,一般选择正式的发行版本为佳。在 Crypto++ 的 Download 页面,源码以压缩包的形式提供,根据需求选择合适的版本进行下载,以最新的 Crypto++ 8.6.0 为例,在下载页面点击 Crypto++ 8.6.0 下载链接:

    download

    交叉编译

    解压缩源码包,如果使用 git clone 拉回来的代码可以忽略这一步

    unzip cryptopp860.zip -d cryptopp860
    
    • 1

    在开始进行交叉编译前建议先阅读一下 Readme.txtInstall.txt 这两份文件,其中 Readme.txt 文件主要介绍了 Crypto++ 的特性与版本历史,Install.txt 文件主要介绍了如何在各个平台进行编译安装的细节,当前也包括如何进行交叉编译。
    相对而言,对 Crypto++ 进行交叉编译还是比较简单的,因为 Crypto++ 库使用的是 Makefile 进行编译,只需要在执行 make 命令前配置 CXX 环境变量即可。
    参考 Install.txt 第 60, 61 行:

    Install.txt
    ----------------
    export CXX=/opt/intel/bin/icpc
    make
    
    • 1
    • 2
    • 3
    • 4

    其中的 /opt/intel/bin/icpc 即是 C++ 交叉编译器的路径,比如我的配置是:

    export CXX=/sdk/toolchains/aarch64--glibc--stable-2020.08-1/bin/aarch64-linux-g++
    make
    
    • 1
    • 2

    编译好之后执行 make install 进行输出:

    make install PREFIX=/tmp/cryptopp
    
    • 1

    最后会在 /tmp/cryptopp 目录下会产生四个文件夹,makefile 文件将交叉编译生成的 cryptest.exe 拷贝到 bin 目录,头文件拷贝到 include/cryptopp 目录,静态库文件拷贝到 lib 目录,以及测试数据拷贝到 share/cryptopp 目录。对于依赖 libcryptopp 库的开发而言,只需要关注 includelib 两目录即可。

    最后总结一下整个交叉编译过程的命令是:

    export CXX=/sdk/toolchains/aarch64--glibc--stable-2020.08-1/bin/aarch64-linux-g++
    make
    make install PREFIX=/tmp/cryptopp
    
    • 1
    • 2
    • 3
    • 配置好 CXX 环境变量,指定交叉编译器的实际路径
    • 执行 make 命令进行交叉编译
    • 执行 make install 命令将编译产物拷贝到指定目录

    编译成动态库

    默认情况下,make 生成的是静态库 libcryptopp.a,如果需要生成动态库需要执行:

    make dynamic
    
    • 1

    或者

    make libcryptopp.so
    
    • 1
  • 相关阅读:
    基于openEuler虚拟机远端执行mugen测试脚本
    C# 键盘事件 输入焦点
    2.2.1 SQL语言分类
    Python图形界面框架PyQt5使用详解
    SRAM与DRAM的区别
    测试/开发程序员的思考,突破变得更强......
    十种排序方法
    阿里云服务器安全组开放指定端口无法访问问题记录
    Docker安装InfluxDB_用户名密码和策略使用
    信息学奥赛一本通:1173:阶乘和
  • 原文地址:https://blog.csdn.net/bluebird_shao/article/details/126203218