zoukankan      html  css  js  c++  java
  • Ubuntu 12.04LTS下配置OpenSSL和gmp环境

    配置安装OpenSSL:

    1. sudo apt-get install openssl
    2. sudo apt-get install libssl-dev

    编译安装gmp:

    1. 到https://gmplib.org/#DOWNLOAD下载源码压缩包,lz后缀的压缩包Ubuntu默认无法解压,最好下xz后缀的。
    2. 解压到某目录。
    3. Ubuntu默认没有安装g++编译器。输入sudo apt-get install g++安装。
    4. gmp貌似需要依赖m4这个组件,装装装。命令:sudo apt-get install m4
    5. 源码包内有自动make的工具。先输入sudo ./configure --enable-cxx对接下来的make进行自动配置。(在使用configure的时候要加上 --enable-cxx命令,否则不能使用c++库gmpxx.h)
    6. 之后sudo make。自动build开始。
    7. build完成之后,输入sudo make check跑一下测试(可省略,不过自动build过后它会提醒你进行check,说是编译器常常会有漏洞啥的会影响gmp的功能的正确性)
    8. 输入sudo make install安装build完成的gmp库。
    9. 由于安装之后动态链接库都在/usr/local/lib下面,所以需要对/etc/ld.so.conf这个文件进行编辑(文件里面应该是维护了可执行文件开始运行之后,每当它需要用到特定的动态链接库时,它将会搜索的路径)。sudo vim /etc/ld.so.conf打开,在最后一行后面加入/usr/local/lib这个路径。
    10. 输入命令sudo ldconfig对动态库搜索路径进行更新。

    使用库的方法:

    OpenSSL:

    编译时使用gcc或者g++,需要加上-llibssl或者-lcrypto链接选项(根据用到的功能加,如果只用到了OpenSSL的加密那部分组件的功能一般是只需要加-lcrypto)

    示例代码:

    #include <stdio.h>
    #include <openssl/bn.h>
    
    int main() {
            BIGNUM *instance = BN_new();
            BN_init(instance);
            BN_rand(instance, 160, 1, 0);
            BN_print_fp(stdout, instance);
            printf("
    ");
            BN_free(instance);
            return 0;
    }
    

    这里使用了crypto组件里面的bn(bignum)库。编译时输入g++ test_bn.c -lcrypto

    gmp:

    gmp提供c和c++的接口。下面的代码以较为直观的c++大整数类接口为例:

    #include<iostream>
    #include<gmpxx.h>
    using namespace std;
    int main()
    {
        mpz_class a;
        a = 1;
        for(int i = 0; i < 1000; i++)
            a *= 2;
        cout<<"2^1000 = "<<a<<endl;
        //计算-12345*9876543210123456789
        mpz_class b, c;
               b = -12345;
               c = "98765432100123456789";
        cout<<"b * c = "<<b * c<<endl;
        return 0;    
    }

    编译时使用g++ test_gmp.cpp -lgmpxx -lgmp
    注意粗体是需要添加的链接选项,如果使用c的接口,则只需要加-lgmp这个链接选项。



  • 相关阅读:
    pip命令提示unknow or unsupported command install解决方法
    SSH登录慢解方案
    python/shell脚本报异常^M: bad interpreter: No such file or directory
    MySQL中自增ID起始值修改方法
    Centos给文件设置了777权限仍不能访问解决方案
    CentOS7下安装mysql5.7
    CentOS7下使用yum安装MariaDB
    sublime text 3启动报错"swallow_startup_errors"解决方法
    一个清除数组的方法在 Kotlin、Java、C#和Nim上的性能测试
    国外立交桥设计参考资料
  • 原文地址:https://www.cnblogs.com/xt2357/p/4022815.html
Copyright © 2011-2022 走看看