linux编译charm库
在 Windows 的 Linux 子系统 (WSL) 中使用 Ubuntu 编译安装 Charm 库的步骤如下:
基于 WSL 的 Charm 库安装教程
1. 更新系统并安装依赖
应用商店下载linux后执行wsl --update
在 WSL Ubuntu 中,运行以下命令安装必要的编译工具和库:
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential python3 python3-dev python3-pip python3-setuptools \
libgmp-dev libssl-dev swig libpbc-dev git wget gcc make m4 flex bison
这里的库可以一个一个单独安装,没有就去找源码安装,下面报安装错也能再安装,这里ubuntu版本最好不要太高,openssl我的是3.0.2没问题,gmp最高,openssl,python一般会自带,python我的是python3.10
2. 安装 PBC 库
PBC 是 Charm 的核心依赖之一,需要手动编译安装。
下载源码:
PBC Library - Pairing-Based Cryptography - Downloads下载第一个
wget https://crypto.stanford.edu/pbc/files/pbc-0.5.14.tar.gz tar -zxvf pbc-0.5.14.tar.gz
编译和安装:
进入解压的目录
./configure make sudo make install echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf.d/libpbc.conf sudo ldconfig
3. 下载并安装 Charm 库
下载源码:
git clone https://github.com/JHUISI/charm.git cd charm
配置安装路径:
执行
configure.sh
脚本,指定 GMP 和 PBC 的安装路径:./configure.sh #执行成功 Install prefix /usr/local data directory /usr/local/share/charm binary directory /usr/local/bin library directory /usr/local/lib config directory /usr/local/etc Source path /home/hero/charm CFLAGS -O2 -g CHARM_CFLAGS -m64 -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fstack-protector-all -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits LDFLAGS -m64 make make python /usr/bin/python3 python-config /usr/bin/python3-config build_ext options build_ext install install host CPU x86_64 wget /usr/bin/wget gprof enabled no profiler no static build no -Werror enabled no integer module yes ecc module yes pairing module yes disable benchmark no libm found yes libgmp found yes libpbc found yes libcrypto found yes Documentation no
编译和安装:
make #执行成功 copying build/lib.linux-x86_64-3.8/charm/core/math/pairing.cpython-38-x86_64-linux-gnu.so -> charm/core/math copying build/lib.linux-x86_64-3.8/charm/core/math/integer.cpython-38-x86_64-linux-gnu.so -> charm/core/math copying build/lib.linux-x86_64-3.8/charm/core/math/elliptic_curve.cpython-38-x86_64-linux-gnu.so -> charm/core/math copying build/lib.linux-x86_64-3.8/charm/core/benchmark.cpython-38-x86_64-linux-gnu.so -> charm/core copying build/lib.linux-x86_64-3.8/charm/core/crypto/cryptobase.cpython-38-x86_64-linux-gnu.so -> charm/core/crypto copying build/lib.linux-x86_64-3.8/charm/core/crypto/AES.cpython-38-x86_64-linux-gnu.so -> charm/core/crypto copying build/lib.linux-x86_64-3.8/charm/core/crypto/DES.cpython-38-x86_64-linux-gnu.so -> charm/core/crypto copying build/lib.linux-x86_64-3.8/charm/core/crypto/DES3.cpython-38-x86_64-linux-gnu.so -> charm/core/crypto Complete sudo make install #执行成功 Installed /usr/local/lib/python3.8/dist-packages/attrs-25.3.0-py3.8.egg Searching for setuptools==45.2.0 Best match: setuptools 45.2.0 Adding setuptools 45.2.0 to easy-install.pth file Installing easy_install script to /usr/local/bin Using /usr/lib/python3/dist-packages Finished processing dependencies for Charm-Crypto==0.50
import charm
判断安装是否成功
PS:conda环境下会使用conda自带的环境,可能会编译出错,需要禁用,执行命令
mv /root/miniconda3/compiler_compat /root/miniconda3/compiler_compat.bak
后面直接改回就行了
报错就看报错信息,可以参考官方Platform Install Manual — Charm-Crypto 0.50 documentation