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 システムを例として、コンパイル済みパッケージの生成方法を説明します。
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 を使用することを推奨します。
- これらのパッケージをインストールした後でクライアントをコンパイルできます。 クライアントのソースコードをダウンロードし、ソースコードディレクトリで
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/
以下のすべてのファイル。
- バージョンファイル: