最近开发需要实现自建对象存储,并在linux上连接
因为原有的程序是C++的,所以需要C++或C的库,但是minio提供的miniocpp没有编译成功
miniocpp
因为minio符合S3标准,所以也可使用 AWS 的SDK
编译文档

1. 安装依赖

1
sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev

2. 下载源码

1
2
3
4
# https
git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp
# ssh
git clone --recurse-submodules git@github.com:aws/aws-sdk-cpp.git

3. 从源代码构建SDK

  1. 创建目录
    1
    2
    mkdir sdk_build
    cd sdk_build
  2. 生成构建文件
    1
    2
    3
    4
    cmake ../aws-sdk-cpp -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/firefly/workspace/install -DBUILD_ONLY="s3" -DENABLE_TESTING=OFF
    # make
    make DESTDIR=/home/firefly/workspace/install
    make install
    运行结束即可在 /home/firefly/workspace/install 目录下看到 include 和 lib 文件夹,其中就是头文件和动态库

    4. 注意事项

  3. cmake 版本
    最低版本为 3.13
  4. 关闭测试
    在运行cmake时需要加上 -DENABLE_TESTING=OFF 关闭测试服务,仅构建S3时不需要运行测试,会导致后续make失败
  5. 调用动态库时报错
    在调用动态库时,报未找到CURL4之类的错误,查看curl的引用或者版本是否有误