天天看點

Clion連接配接Docker,使用HElib庫

文章目錄

    • 需求
    • 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 ssl openssh-server -y
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    service ssh restart
    passwd root		# 設定Docker容器的root密碼,用于後續連接配接
               
  • 測試連接配接
    • 在Docker外,用ssh測試連接配接:

      ssh [email protected] -p 12022

      ,輸入Docker的root密碼,成功如下:
      Clion連接配接Docker,使用HElib庫

CLion

  • Settings -> Build… -> Toolchains -> ‘+’ -> Remote Host
    Clion連接配接Docker,使用HElib庫
  • 可以自定義名字,然後設定連接配接
    Clion連接配接Docker,使用HElib庫
  • 按下圖填寫,注意port應該填寫的是Docker對外映射的端口,我這裡就應該是12022,而不是22,測試連接配接沒問題就可以了
    Clion連接配接Docker,使用HElib庫
  • 設定CMake:Settings -> Build… -> CMake,指定toolchains就行
    Clion連接配接Docker,使用HElib庫
  • 另外,如果想把代碼啥的也同步到Docker上,則添加SFTP:Settings -> Build… -> Deployment,添加SFTP,設定Mappings,見下圖:
    Clion連接配接Docker,使用HElib庫
    至此,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,大概能改的地方圈出來了
    Clion連接配接Docker,使用HElib庫

參考

以clion為例記錄一次基于docker環境配置開發-CSDN

繼續閱讀