全部产品
阿里云办公

安装

更新时间:2018-03-20 16:38:11

由于C++的特殊性,我们建议您先用本文介绍的方法编译,复制build/release/src/tablestore/core/impl/buildinfo.cpp备用。然后将C++ SDK源码以及buildinfo.cpp复制到您自己的代码库中,并用您的编译系统来进行编译。

编译参数

在编译客户端代码的时候,有些编译器的行为是必须保证的,即,某些编译器参数是必须的。

以下是针对gcc编译器的编译参数及说明。

参数 是否必须 说明
--std=gnu++03 必须 支持C++98 TR1语言版本,带gcc扩展(即typeof)。
-pthread 必须 多线程编程的必要参数。编译或者链接都需要加上该参数。
-fwrapv 必须 整型数据溢出则回转,即,无符号整型向上溢出则成为0,有符号整型向上溢出则成为最小的负数。客户端基于这个行为做溢出检查。
-O2 建议存在 优化级别。一般不建议更高的优化级别。
-fsanitize=address和-fvar-tracking-assignments 建议存在 gcc-4.9之后支持libasan,可以快速而轻量地检测各种内存使用上的错误。如果需要表格存储的开发人员定位错误,请带上这两个编译参数复现错误,并且在链接的时候也需要带上前一个参数。
说明:libasan和valgrind不兼容。

环境依赖与预编译包

本文以debian8系统为例说明生成预编译包的方法。

  1. 打开docker/debian8/Dockerfile文件,选择dockerfile的方式输出客户端对系统的环境依赖。这种方式可以自动保证代码和环境的一致性。

    1. RUN apt-get install -y scons g++ libboost-all-dev protobuf-compiler libprotobuf-dev uuid-dev libssl-dev
    2. RUN apt-get install -y ca-certificates # for HTTPS support

    SDK依赖以下几项:

    • scons & gcc: 编译系统
    • boost
    • uuid
    • protobuf:序列化库
    • openssl:签名,以及支持HTTPS所用
    • ca-certificates:仅为支持HTTPS所用。如果您只用表格存储的HTTP地址,可以不安装这个库。建议使用更为安全的HTTPS。
  2. 安装以上包之后便可以编译客户端。方法是下载客户端的源码,并在源码目录下执行scons

    1. $ git clone https://github.com/aliyun/aliyun-tablestore-cpp-sdk.git
    2. $ cd aliyun-tablestore-cpp-sdk
    3. $ scons -j4

当上述步骤正常结束,一个tar包就编译好了。包名通常可以在scons最后的输出中找到。例如debian8系统,包名及所在的路径是:build/release/pkg/aliyun-tablestore-cpp98-sdk-4.4.1-debian8.9-x86_64.tar.gz

  • 包名里包含以下几个要素:

    • C++版本(C++98)
    • SDK版本(4.4.1)
    • OS版本(debian8.9)
    • OS架构(x86_64)
  • 包的内容包括:

    1. $ tar -tf build/release/pkg/aliyun-tablestore-cpp98-sdk-4.4.1-debian8.9-x86_64.tar.gz
    2. version.ini
    3. lib/libtablestore_core.so
    4. lib/libtablestore_core_static.a
    5. lib/libtablestore_util.so
    6. lib/libtablestore_util_static.a
    7. include/tablestore/util/arithmetic.hpp
    8. include/tablestore/util/assert.hpp
    9. include/tablestore/util/foreach.hpp
    10. include/tablestore/util/iterator.hpp
    11. include/tablestore/util/logger.hpp
    12. include/tablestore/util/logging.hpp
    13. include/tablestore/util/mempiece.hpp
    14. include/tablestore/util/mempool.hpp
    15. include/tablestore/util/metaprogramming.hpp
    16. include/tablestore/util/move.hpp
    17. include/tablestore/util/optional.hpp
    18. include/tablestore/util/prettyprint.hpp
    19. include/tablestore/util/random.hpp
    20. include/tablestore/util/result.hpp
    21. include/tablestore/util/security.hpp
    22. include/tablestore/util/seq_gen.hpp
    23. include/tablestore/util/threading.hpp
    24. include/tablestore/util/timestamp.hpp
    25. include/tablestore/util/try.hpp
    26. include/tablestore/util/assert.ipp
    27. include/tablestore/util/iterator.ipp
    28. include/tablestore/util/logging.ipp
    29. include/tablestore/util/mempiece.ipp
    30. include/tablestore/util/move.ipp
    31. include/tablestore/util/prettyprint.ipp
    32. include/tablestore/core/client.hpp
    33. include/tablestore/core/error.hpp
    34. include/tablestore/core/range_iterator.hpp
    35. include/tablestore/core/retry.hpp
    36. include/tablestore/core/types.hpp

    即,包内容包含以下元素:

    • 版本文件:version.ini
    • 库文件:lib/下所有文件。其中libtablestore_core_static.a依赖libtablestore_util_static.a,动态库也类似。
    • 头文件:include/下所有文件。
本文导读目录