Clion连接Docker,使用HElib库

news2024/12/23 22:15:13

文章目录

    • 需求
    • Clion连接服务器内的Docker
      • Docker
      • CLion
    • Docker内配置HElib库
    • 参考

需求

  • HElib库是用C++编写的同态加密开源库,一般在Linux下使用
  • 为了不混淆生产环境,使用Docker搭建HElib运行环境
  • 本地在Windows下开发,使用的IDE为Clion,本地无HElib运行环境
  • 综上,需求是,让CLion连接搭建好HElib的Docker上,在本地CLion中编写代码,在远程服务器的Docker里运行代码

Clion连接服务器内的Docker

Docker

  • Docker安装略
  • Docker创建容器
    sudo docker run -it --name helib -p 12022:22 ubuntu:20.04 bash
    
    命令解释:–name指定容器名字;-p指定端口,用于服务器端口映射到Docker内端口,由于后续需要通过ssh连接Docker容器,故映射到22端口;使用的镜像为ubuntu:20.04,镜像随意;bash指定运行终端
    PS. 可以加个-v参数指定挂载目录
  • 进入Docker后,先退出然后再重启进入(想让容器一直运行不关闭我就这么干的)
    在容器内:exit		# 退出后容器也会退出
    sudo docker start helib		# 启动容器
    sudo docker exec -it helib bash		# 进入容器,之后再退出容器也不会退出了
    
  • 安装ssh等服务
    apt update
    apt install openssl openssh-server -y
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    service ssh restart
    passwd root		# 设置Docker容器的root密码,用于后续连接
    
  • 测试连接
    • 在Docker外,用ssh测试连接:ssh root@localhost -p 12022,输入Docker的root密码,成功如下:welcome

CLion

  • Settings -> Build… -> Toolchains -> ‘+’ -> Remote Host
    settings
  • 可以自定义名字,然后设置连接
    config
  • 按下图填写,注意port应该填写的是Docker对外映射的端口,我这里就应该是12022,而不是22,测试连接没问题就可以了
    在这里插入图片描述
  • 设置CMake:Settings -> Build… -> CMake,指定toolchains就行
    cmake-settings
  • 另外,如果想把代码啥的也同步到Docker上,则添加SFTP:Settings -> Build… -> Deployment,添加SFTP,设置Mappings,见下图:
    sftp
    至此,CLion可以顺利连接到服务器里的Docker啦

Docker内配置HElib库

参考官方文档:HElib/INSTALL.md

  • apt安装依赖:g++, cmake这些

  • 克隆项目,在Docker内或者在Docker外对应挂载的目录下克隆都行

  • 按照官网教程编译后,在build路径下会得到一个目录helib_pack,建议将其放至全局变量里:cp -r helib_pack /usr/local,这样在编译自己写的程序时不需要指定路径,在Clion里也能检测到这些依赖

  • 测试部分参考:HElib/examples/README.md

  • 自己编写程序时,注意CMakeList.txt的写法,注意文件路径是否写对,自己编写的程序路径不同,CMakeList就需要修改对应的路径,下面是我的CMakeList,大概能改的地方圈出来了
    CMakeList

参考

以clion为例记录一次基于docker环境配置开发-CSDN

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

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

相关文章

动态规划:leetcode 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机II

leetcode 121. 买卖股票的最佳时机leetcode 122.买卖股票的最佳时机IIleetcode 121. 买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日…

node版本管理工具nvm

1.标题卸载nvm和node.js 系统变量中删除nvm添加变量:NVM_HOME和NVM_SYMLINK环境变量中 path:删除nvm自动添加的变量 Path %NVM_HOME%;%NVM_SYMLINK%删除自身安装node环境,参考图一图二 图一 图二 2.安装nvm nvm-window下载------https:/…

ES window 系统环境下连接问题

环境问题:(我采用的版本是 elasticsearch-7.9.3)注意 开始修正之前的配置:前提:elasticsearch.yml增加或者修正一下配置:xpack.security.enabled: truexpack.license.self_generated.type: basicxpack.secu…

对象实例化【JVM】

JVM对象实例化简介/背景一、创建对象的方式1. new2. Class对象的newInstance方法3. Construstor对象的newInstance(xx)方法4. 使用clone方法二、创建对象的步骤1. 判断对象是否已经加载、链接、初始化2. 为对象分配内存3. 处理并发安全问题4. 初始化分配到的空间5. 设置对象的对…

Tech Lead如何引导团队成员解决问题?

作为一个开发团队的Tech Lead,当团队成员向你寻求帮助时,你有没有说过下面这些话? 你别管了,我来解决这个问题你只要。。。就行了你先做其他的吧,我研究一下,然后告诉你怎么做 当我们说这些话时&#xff…

腾讯免费企业邮箱迁移记录

本文记录在重新申请腾讯企业邮箱的过程。 背景 很多年前,将域名latelee.org 迁移到了阿里云,当时因政策原因无法实名,但能使用。去年3月,阿里云提示无法续费,紧急将其转到外面某服务,继续使用,…

IP地址的工作原理

如果您想了解特定设备为何未按预期方式进行连接,或者想要排查网络无法正常工作的可能原因,它可以帮助您了解 IP 地址的工作原理。互联网协议的工作原理与任何其他语言相同,即使用设定的准则进行通信以传递信息。所有设备都使用此协议与其他连…

jq获取同级或者下级的dom节点的操作

1.使用find找到对应的class或者其他 var class_dom1 obj.find(.class名称);或者 find(span .class名称)2.使用添加背景颜色来确定当前的查找位置 class_dom1.css(background,red);3.通过parent来找到它的上级的dom节点 var parent_li_dom1 class_dom1.parent(li.parent_li…

进阶指针——(2)

本次讲解重点: 6. 函数指针数组 7. 指向函数指针数组的指针 8. 回调函数 在前面我们已经讲解了进阶指针的一部分,我们回顾一下在进阶指针(1)我们学过的难点知识点: int my_strlen(const char* str) {return 0; }int main() {//指针数…

创宇盾重保经验分享,看政府、央企如何防护?

三月重保已经迫近,留给我们的准备时间越来越少,综合近两年三月重保经验及数据总结,知道创宇用实际案例的防护效果说话,深入解析为何创宇盾可以在历次重保中保持“零事故”成绩,受到众多部委、政府、央企/国企客户的青睐…

HACKTHEBOX——Irked

nmapnmap -sV -sC -Pn -T4 -oA nmap 10.10.10.117可能是因为网络原因,与目标链接并不稳定,因此添加了参数-Pn,也只扫描了常见的端口扫描可以看到只开启了3个端口,22,80和111。但是在访问web时,页面提示运行着irc因此再…

WebRTC新增FFmpeg视频编解码模块

1、整体描述目前webrtc内置的视频编解码器包括:VP8、VP9、AV1和H264。一般情况下载pc端基本可以满足大部分的需求,但是有时候为了进行编解码器的扩展包括支持H265或者是支持硬件编解码以提升效率时需要新增编解码模块。2、新增外部编码器编码器实现的要点…

亿万级海量数据去重软方法

文章目录原理案例一需求:方法案例二需求:方法:参考原理 在大数据分布式计算框架生态下,提升计算效率的方法是尽可能的把计算分布式话、并行化,避免单节点计算过载,把计算分摊到各个节点。这样解释小白能够…

最新|移动机器人导航定位技术概述

前言目前工业界广泛落地使用的移动机器人,除了应用场景在餐厅、酒店、超市等小范围室内送餐机器人和消毒机器人外,另外一个“大赛道”应用场景就是在工厂、制造装配车间、电站或车站的物流搬运机器人和巡检机器人了。而在最开始,一切都得从AG…

spring cloud gateway (五)

Gateway简介 Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代Netflix Zuul,其不仅提供统一的路由方式…

java 字典

java 字典 数据结构总览 Map Map 描述的是一种映射关系,一个 key 对应一个 value,可以添加,删除,修改和获取 key/value,util 提供了多种 Map HashMap: hash 表实现的 map,插入删除查找性能都是 O(1)&…

MySQL跨服务器数据映射

MySQL跨服务器数据映射环境准备1. 首先是要查看数据库的federated引擎 开启/关闭 状态2. 打开任务管理器,并重启mysql服务3. 再次查看FEDERATED引擎状态,引擎已启动映射实现问题总结在日常的开发中经常进行跨数据库进行查询数据。 同服务器下跨数据库进…

【SpringCloud】SpringCloud详解之Feign实战

目录前言SpringCloud Feign远程服务调用一.需求二.两个服务的yml配置和访问路径三.使用RestTemplate远程调用(order服务内编写)四.使用Feign远程调用(order服务内配置)五.自定义Feign配置(order服务内配置)六.Feign配置日志(oder服务内配置)七.Feign调优(order服务内配置)八.抽…

STM32之 串口

串口通信串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方 式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简 单,只…

Vue基础入门讲义(三)-指令

文章目录1.什么是指令?2.插值表达式2.1.花括号2.2.插值闪烁2.3.v-text和v-html3.v-model4.v-on4.1.基本用法4.2.事件修饰5.v-for5.1.遍历数组5.2.数组角标5.3.遍历对象6.key7.v-if和v-show7.1.基本使用7.2.与v-for结合7.3.v-else7.4.v-show8.v-bind8.1. 属性上使用v…