Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04

news2024/11/15 17:41:10

第零步 VMware虚拟机设置和安装Anaconda虚拟环境

因为后面要编译源码,所以最好把CPU设置为最大,例如我的电脑是4核8线程,则:

 关于Anaconda虚拟环境,这里不再赘述,后面都假设已经安装好虚拟环境,Python版本为3.7,名称叫 baobao。

Python版本为3.7很重要!建议就使用这个,因为有人用Python3.8,最后有问题。

第一步 Ubuntu换源

先备份一下:

cd /etc/apt
sudo cp sources.list /etc/apt/sources_copy.list

换源:

1. 利用vim编辑文件:

sudo vim sources.list #加上sudo,不然可能无法写入

注:如果没有vim,那么用vi即可(不想用gedit,是因为打开比较慢) 

输入:

:%d

再按键盘上的字母 i,  把下面代码复制进去:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

# deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

按键盘上 ESC,输入:

:w!

按键盘上 Ctrl+D,退出。

更新:

sudo apt-get update

第二步 安装包/依赖

sudo apt-get install gcc make perl m4 flex bison python3-setuptools python3-dev libssl-dev libffi-dev python3-pip

接着: 

pip3 install pyparsing==2.4.6

注:因为Ubuntu20.04自带了Openssl1.1.1,所以就不需要安装这个了:

第三步 修改系统默认Python——使用update-alternatives工具

首先需要创建管理:

sudo update-alternatives --install /usr/bin/python python /home/wind/anaconda3/envs/baobao/bin/python3.7 1 
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2

你需要修改哪里?

0. 其实只需要第一行,第二行是为了后面解释一下update-alternatives是如何管理链接。

1. 下面框框里的东西,可以理解为一个控制台,这个控制台的名称叫做 python,你可以随便起名,叫做“狗”都行:

2. 修改下面两个框框的路径:

红框是你的虚拟环境的Python路径,如何获取呢?

虚拟环境下,输入:which python3.7,就用这个路径:

 

蓝框是非虚拟环境下的python路径,重新打开一个终端,输入 conda deactivate,再输入which python3.8(系统默认的),就用这个路径:

 注:路径最后面的 1 和 2 是优先级,你设置4 5 6都行,其实不重要,我们后面依然可以手动指定。

其次需要手动指定优先级:

sudo update-alternatives --config python # 最后python就是控制台的名字

看到如下: 

只需要找到虚拟环境里的python3.7,然后看最前面的编号,例如上图是0和2,那么我只需要输入0或2,再按回车,那么update-alternatives工具就会自动帮你把虚拟环境里的python3.7设置为默认。这里很重要,因为后面编译 charm 的时候,必须保证 charm 依赖的版本是python3.7。

额外拓展:(和安装过程无关)

输入命令:

update-alternatives --display python

可以看到目前指向正确: 

第四步 下载、编译和安装GMP、PBC

下载GMP:

Index of /download/gmp/

下载PBC:

PBC Library - Pairing-Based Cryptography - Downloads

然后把安装文件放到目录下,我这里放到:/home/wind/baobao/

解压编译安装GMP:

cd /home/wind/baobao/
sudo tar -jxvf gmp-5.1.3.tar.bz2
cd gmp-5.1.3/
sudo ./configure 
sudo make -j8
sudo make install

注:使用 make -j参数是调用多线程编译,例如4核8线程,那就:make -j8

解压编译安装PBC:

# 先cd ..退回到 baobao 目录
sudo tar -zxvf pbc-0.5.14.tar.gz
cd pbc-0.5.14/
sudo ./configure 
sudo make -j8
sudo make install

第五步 下载、编译和安装charm

 下载charm:

GitHub下载源码:GitHub - JHUISI/charm: Charm: A Framework for Rapidly Prototyping Cryptosystems

 把下载好的 charm-dev.zip 文件拷贝到 baobao目录下,然后:

编译、安装:

sudo unzip charm-dev.zip 
cd charm-dev/
sudo ./configure.sh
sudo make -j8
sudo make install

成功后可以看到:

注:可能在intall的时候报错,解决办法,重新编译和安装即可:

第六步 跑个demo

vscode里选择解释器:

运行,可能发现有一个报错: 

libpbc.so.1: cannot open shared object file: No such file or directory

解决办法:

cd /etc/ld.so.conf.d
sudo vi libpbc.conf

输入:

/usr/local/lib

保存,退出,最后:

sudo ldconfig

再次运行demo,成功:


本文献给我的美丽可爱温柔大方的610宝宝~ ❤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/677344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

包装类--Math 类--Arrays 类--System 类

包装类–Math 类–Arrays 类–System 类 包装类 包装类的分类 包装类和基本数据的转换 演示包装类和基本数据类型的相互转换,这里以int和Integer演示。 1)jdk5前的手动装箱和拆箱方式,装箱:基本类型->包装类型&…

OpenAI收费标准,ChatGPT调用须知!

OpenAI收费标准,ChatGPT调用须知! 免费镜像站价格说明GPT4GPT3.5图片模型如何付费 免费镜像站 ChatGPT有很多镜像站,需要输入API-KEY才可以使用,镜像站不会进行收费,而是OpenAI会对您进行收费。本文主要说明OpenAI的收…

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

( 该图由AI制作 ) 目录 包的基本知识 包收发操作概览 生成包含接收方 IP 地址的 IP 头部 生成以太网用的 MAC 头部 通过 ARP 查询目标路由器的 MAC 地址 以太网的基本知识 将 IP 包转换成电或光信号发送出去 给网络包再加 3 个控制数据 向集线…

代码随想录算法训练营第四十一天 | 背包问题(一维、二维)、416. 分割等和子集

01背包:n种物品,每种物品只有1个,有相应的重量和价值 最多只能装m的重量,最多价值为多少? dp[i][j] : [0, i]物品任取放进容量为j的背包里 不放物品i:dp[i-1][j] 放物品i:dp[i-1][j-weight[…

如何系统性的学习Python语言

零基础同学的福音来了,如果你对Python语言的学习感兴趣,接下来可以由浅入深的了解下Python语言,哪怕你是零基础的小白也完全可以学会的,最后也会给大家放出学习和实例相结合的教程及方法,给到各位同学系统性的教学&…

ES-索引管理

前言 数据类型 ​ 搜索引擎是对数据的检索,所以我们先从生活中的数据说起。我们生活中的数据总体分为两种: 结构化数据非结构化数据 结构化数据: 也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数…

<C语言> 数组

1.一维数组的创建和初始化。 1.1 数组的创建 数组是一组相同类型元素的集合。 使用以下方式声明一个一维数组: type arrayName[arraySize];type是数组中元素的类型,arrayName是数组的名称,arraySize是数组的大小(即元素的个数&a…

linux系统中如何制作rootfs?详细教程

如何制作rootfs?安排!想直奔主题的,直接跳到第四部分。 一、分析 1. 文件系统简介 理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种…

硬件入门之什么是mos管

硬件入门之什么是mos管 文章目录 硬件入门之什么是mos管一、mos管是什么?MOS管常用于: 驱动大功率电路中。MOS选型参数mos管调参数 二、实际应用场景1.防反接保护电路)2.防过压保护电路3.防反接防过压电路一体电路4.驱动电路 总结 一、mos管是…

VS+QT+VTK三维网格显示-点面选择-法线法向量显示-配准-分割窗体程序

程序示例精选 VSQTVTK三维网格显示-点面选择-法线法向量显示-配准-分割窗体程序 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<VSQTVTK三维网格显示-点面选择-法线法向量显示-配准-分…

Quartz使用H2数据库(嵌入模式)进行持久化

使用H2(嵌入模式)持久化Quartz任务 &#x1f51d;前言&#xff1a; Quartz在包内提供了多种数据库的sql文件&#xff0c;大家可以选择方便的使用。路径如下。 1.初始化h2(不使用Server模式) public class InitH2 {private static String USER_NAME "lee";private…

Unity简单操作:InputSystem获取WASD键盘输入 移动人物

目录 安装InputSystem 在编辑的脚本中使用 InputSystem生成的脚本 Unity版本&#xff1a;2019.2.3f1 安装InputSystem 菜单栏/Window/Package Manager/Input System 工程面板内 右键-->创建Input Actions 选中New Controls改名为PlayerControls 然后属性 面板按下Edit as…

软件项目管理 第七章 软件项目的质量管理与配置管理 课后习题参考答案——主编:李冰、张桥珍、刘玉娥

第七章 软件项目的质量管理与配置管理 课后习题参考答案 1.选择题 (1)项目质量管理的最终责任由谁来承担?&#xff08;D&#xff09; A.项目开发人员 B.采购经理 C.质量经理 D.项目经理 (2)“质量成本”是一个项目管理概念,它说明了下列哪项成本?…

HDFS 写流程源码分析

HDFS 写流程源码分析 一、客户端&#xff08;一&#xff09;文件创建及Pipeline构建阶段&#xff08;二&#xff09;数据写入&#xff08;三&#xff09;输出流关闭 二、NameNode端&#xff08;一&#xff09;create 环境为hadoop 3.1.3 一、客户端 以下代码创建并写入文件。 …

如何优雅地安装 Android Studio

&#x1f4ad; 写在前面&#xff1a;我们假设读者已经搞定 JDK 了&#xff0c;如果没搞定请先搜索 JDK 的安装教程。访问 Oracle JDK 下载页面&#xff1a;访问 Java Downloads | Oracle &#xff0c;点击 "JDK Download" 按钮。选择适合您操作系统的 JDK 版本&#…

设计模式之模板方法模式笔记

设计模式之模板方法模式笔记 说明Template Method(模板方法)目录模板方法模式示例类图抽象类包菜类菜心类测试类 说明 记录下学习设计模式-模板方法模式的写法。JDK使用版本为1.8版本。 Template Method(模板方法) 意图:定义一个操作中的算法骨架&#xff0c;而将一些步骤延…

yolo格式visdrone转换

目录 yolo格式转换1. Visdrone2019格式转换 yolo格式转换 1. Visdrone2019格式转换 数据集下载地址https://aistudio.baidu.com/aistudio/datasetdetail/115729 如果是visdrone数据集&#xff0c;直接使用txt2xml.py去转换&#xff0c;修改annotation和img的路径&#xff0c…

<Linux开发>驱动开发 -之- Linux LCD 驱动

&#xff1c;Linux开发&#xff1e;驱动开发 -之- Linux LCD 驱动 交叉编译环境搭建&#xff1a; &#xff1c;Linux开发&#xff1e; linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下&#xff1a; &#xff1c;Linux开发&#xff1e; -之-系统移植 uboot移植过程详细…

网络基础一

网络发展 独立模式&#xff1a;计算机之间相互独立。 网络互联&#xff1a;多台计算机连接在一起&#xff0c;完成数据共享。 局域网LAN&#xff1a;计算机数量更多了&#xff0c;通过交换机和路由器连接在一起&#xff1b; 广域网WAN&#xff1a;将远隔千里的计算机都连在…

[BPU部署教程] 万字长文!通透解读模型部署端到端大流程——以终为始,以行为知

去年6月份拿到开发板到现在&#xff0c;转眼已经过去大半年了&#xff0c;这个博客11月初就在写&#xff0c;断断续续写到现在。C部署需要考虑的问题很多&#xff0c;如果只给个简单部署教程的话&#xff0c;就算整理出来&#xff0c;感觉帮助也不大&#xff0c;各位开发时候我…