0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RHEL8でGemFireのC++NativeClientのサンプルコードをビルドする

Last updated at Posted at 2023-10-13

VMware GemFire(旧Tanzu GemFire)のC++NativeClientをRHEL8上で動かそうとしたら、少し罠があったので備忘録がてら残す。

C++NativeClientのインストール

TanzuNetworkからVMware GemFire Native Client RHEL 8をダウンロードし、RHEL8上で解凍する。

tar xvzfp vmware-gemfire-native-10.4.3-build.9-Rhel8-64bit.tar.gz

ドキュメントの記載に従って移動し、環境変数にパスを設定する。(この環境変数はビルドするまでのところでは使っていないかも。サンプル内のスクリプトでは見ている模様)

sudo mv vmware-gemfire-native /usr/local/nativeclient
echo "export GEODE_HOME=/opt/vmware/vmware-gemfire-10.0.1/" >> ~/.bashrc
. ~/.bashrc

OpenSSLのインストール

RHEL8用のOpenSSL3のライブラリが配布されていないようなので自作する。
ソースをダウンロードしてmake installする。
./Configureのオプションはこちらの記事を参考にした。

wget https://www.openssl.org/source/openssl-3.0.11.tar.gz
tar xvzf openssl-3.0.11.tar.gz
cd ./openssl-3.0.11
sudo yum install perl-IPC-Cmd perl-Pod-Html
./Configure  --prefix=/usr --openssldir=/usr/local/ssl '-Wl,-rpath,$(LIBRPATH)'
make -j9
sudo make install

サンプルのビルド

ビルドのためにcmakeをインストールする。

sudo yum install cmake -y

サンプルコードを手元に展開する。

mkdir -p workspace/build
cp -r ./nativeclient/examples/ ./workspace

ビルドする。

cd workspace/build/
cmake .. -DVMwareGemFireNative_ROOT="/usr/local/nativeclient"
cmake --build .

問題なければ各サンプルディレクトリの下にバイナリが生成されており、実行できる。

$./cpp/transaction/cpp-transaction
Created cache
Created region 'exampleRegion'
Rolled back transaction - retrying(4)

躓いたところ

サンプルのBUILD-EXAMPLES.mdに従ってビルドすると、以下のエラーで失敗する。

$ cmake .. -DGeodeNative_ROOT="/usr/local/nativeclient"
:(省略)
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find VMwareGemFireNative (missing:
  VMwareGemFireNative_CPP_LIBRARY VMwareGemFireNative_CPP_INCLUDE_DIR) (found
  version "1.0")

これはGeodeNative_ROOTがGeode用の定義であるため。
エラーに従ってVMwareGemFireNative_ROOTに置き換えれば動く。

あと、OpenSSLを入れていないと以下のエラーとなる。

$ cmake --build .
:
/usr/bin/ld: warning: libssl.so.3, needed by /usr/local/nativeclient/lib/libvmware-gemfire.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libcrypto.so.3, needed by /usr/local/nativeclient/lib/libvmware-gemfire.so, not found (try using -rpath or -rpath-link)

Requirementには載っておらず見落としやすいため注意が必要となる。

付録:スクラッチ開発用の雛形

exampleをコピーして開発するのはやりづらいので、ゼロから開発する際にテンプレートとして使えそうな雛形を以下に用意した。

構成は以下。

gemfire-client-sample
|-- CMakeLists.txt
|-- Makefile
|-- cmake
|   `-- FindVMwareGemFireNative.cmake
|-- main.cpp
`-- script
    |-- startserver.ps1
    |-- startserver.sh
    |-- stopserver.ps1
    `-- stopserver.sh

スクリプトはサンプルのものを流用した。
/usr/local/nativeclinentにGemFire Clientがインストールされていれば、makeするだけで動くはず。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?