C++ は特殊なので、このトピックで説明されている方法を使用してコンパイルし、build/release/src/tablestore/core/impl/buildinfo.cpp をバックアップのためにコピーすることを推奨します。 次に、C++ SDK のソースコードと buildinfo.cpp を自分のコードライブラリにコピーして、自分のコンパイルシステムを使ってコンパイルします。

コンパイルパラメーター

クライアント側のコードをコンパイルするときは、いくつかのコンパイラ動作を保証する必要があります。 これは、いくつかのコンパイラパラメーターが必要であることを意味します。

GCC コンパイラパラメーターは次のとおりです。

パラメーター 必須項目 説明
--std=gnu++03 はい GCC 拡張子を持つ C++98 TR1 言語、つまり typeof をサポートします。
-pthread はい マルチスレッドプログラミングに必要なパラメーターです。 このパラメーターはコンパイルとリンクの両方に必要です。
-fwrapv はい 整数オーバーフロー時に入れ替わります。 具体的には、符号なし整数オーバーフローの場合は 0、符号付き整数オーバーフローの場合は最小の負の数になります。 クライアントはこの動作に基づいてオーバーフローをチェックします。
-O2 推奨 最適化グレードです。 一般に、より高い最適化グレードは推奨されません。
-fsanitize=address and-fvar-tracking-assignments 推奨 gcc-4.9 以降のバージョンでは、libasan をサポートしています。これは、メモリ使用量のエラーをすばやく検出できる軽量の検出機能です。 Table Store の開発者がエラーを見つける必要がある場合は、エラーが再現されるように、これら2つのコンパイルエラーを取ります。 リンク時にも前のパラメーターを使用する必要があります。
重要 libasan と valgrind は互換性がありません。

環境依存性とコンパイル済みパッケージ

ここでは、Debian 8 システムを例として、コンパイル済みパッケージの生成方法を説明します。

  1. docker/debian8/Dockerfile ファイルを開いて、dockerfile を選択肢し、クライアントの環境依存関係をシステムにエクスポートします。 このメソッドは自動的にコードと環境の間の一貫性を保証します。
    RUN apt-get install -y scons g++ libboost-all-dev protobuf-compiler libprotobuf-dev uuid-dev libssl-dev
    RUN apt-get install -y ca-certificates # HTTPS をサポートするため。
    					

    SDK は以下に依存します。

    • scons & gcc: コンパイルシステムです。
    • boost
    • uuid
    • protobuf: serialization library
    • openssl: signature, used to support HTTPS
    • ca-certificates: used to support HTTPS only. Table Store の HTTP アドレスのみを使用する場合は、このライブラリをインストールしないことを選択できます。 より安全な HTTPS を使用することを推奨します。
  2. これらのパッケージをインストールした後でクライアントをコンパイルできます。 クライアントのソースコードをダウンロードし、ソースコードディレクトリで scons を実行します。
    $ git clone https://github.com/aliyun/aliyun-tablestore-cpp-sdk.git
    $ cd aliyun-tablestore-cpp-sdk
    $ scons -j4
    					

これらのステップが完了すると、tar パッケージがコンパイルされます。 通常、パッケージ名は scons の最終出力にあります。 たとえば、Debian 8 システムのパッケージ名とパスは build/release/pkg/aliyun-tablestore-cpp98-sdk-4.4.1-debian8.9-x86_64.tar.gz です。

  • パッケージ名には、以下の要素が含まれています。

    • C++ version (C++98)
    • SDK version (4.4.1)
    • OS version (Debian 8.9)
    • OS architecture (x86_64)
  • パッケージの内容は次のとおりです。

    $ tar -tf build/release/pkg/aliyun-tablestore-cpp98-sdk-4.4.1-debian8.9-x86_64.tar.gz
    version.ini
    lib/libtablestore_core.so
    lib/libtablestore_core_static.a
    lib/libtablestore_util.so
    lib/libtablestore_util_static.a
    include/tablestore/util/arithmetic.hpp
    include/tablestore/util/assert.hpp
    include/tablestore/util/foreach.hpp
    include/tablestore/util/iterator.hpp
    include/tablestore/util/logger.hpp
    include/tablestore/util/logging.hpp
    include/tablestore/util/mempiece.hpp
    include/tablestore/util/mempool.hpp
    include/tablestore/util/metaprogramming.hpp
    include/tablestore/util/move.hpp
    include/tablestore/util/optional.hpp
    include/tablestore/util/prettyprint.hpp
    include/tablestore/util/random.hpp
    include/tablestore/util/result.hpp
    include/tablestore/util/security.hpp
    include/tablestore/util/seq_gen.hpp
    include/tablestore/util/threading.hpp
    include/tablestore/util/timestamp.hpp
    include/tablestore/util/try.hpp
    include/tablestore/util/assert.ipp
    include/tablestore/util/iterator.ipp
    include/tablestore/util/logging.ipp
    include/tablestore/util/mempiece.ipp
    include/tablestore/util/move.ipp
    include/tablestore/util/prettyprint.ipp
    include/tablestore/core/client.hpp
    include/tablestore/core/error.hpp
    include/tablestore/core/range_iterator.hpp
    include/tablestore/core/retry.hpp
    include/tablestore/core/types.hpp
    					

    このパッケージには現在、次の要素が含まれています。

    • バージョンファイル: version.ini
    • ライブラリファイル: lib/ 以下のすべてのファイル。 libtablestore_core_static.a は、 libtablestore_util_static.a に依存しますが、Moments ライブラリに類似しています。
    • ヘッダファイル: include/ 以下のすべてのファイル。