# IoTDB C++
[English](README.md)
**IoTDB C++ Session SDK**`iotdb_session`
**** Thrift Boost / SDK
IoTDB`127.0.0.1:6667` `root` / `root`
| | |
|------|------|
| `SessionExample` | |
| `AlignedTimeseriesSessionExample` | |
| `MultiSvrNodeClient` | / |
| `tree_example` | C Session API |
## SDK
CI [client-cpp-package.yml](../../.github/workflows/client-cpp-package.yml)
/ zip
`client-cpp--.zip` `include/` `lib/`
| | classifier |
|----------|-----------------|
| Linux x86_64glibc 2.24CXX11 ABI**** | `linux-x86_64-glibc224` |
| Linux aarch64glibc 2.24CXX11 ABI**** | `linux-aarch64-glibc224` |
| Linux x86_64glibc 2.17 libstdc++ ABI | `linux-x86_64-glibc217` |
| Linux aarch64glibc 2.17 libstdc++ ABI | `linux-aarch64-glibc217` |
| macOS x86_64 | `mac-x86_64` |
| macOS arm64 | `mac-aarch64` |
| Windows + VS | `windows-x86_64-vs2017` `vs2026` |
CMake Thrift 0.21****
`-Diotdb-tools-thrift.version=0.14.1.1-gcc4-SNAPSHOT` glibc
Linux glibc 2.24 `g++` **`glibc224`**
glibc 2.17 CentOS 7 libstdc++ ABI
**`glibc217`** Ubuntu 22/24 `glibc217`
`-D_GLIBCXX_USE_CXX11_ABI=0` [client-cpp README](../../iotdb-client/client-cpp/README.md)
## SDK
`client-cpp` SDK **** ****
```
client/
include/
Session.h
Export.h
... 17 thrift/boost/
lib/
iotdb_session.dll + iotdb_session.lib Windows
libiotdb_session.so Linux
libiotdb_session.dylib macOS
```
##
### AMaven
```bash
mvn clean package -DskipTests -P with-cpp -pl example/client-cpp-example -am
```
Maven SDK `example/client-cpp-example/target/client/`
`target/` CMake `target/`
Windows + Visual Studio `target/Release/`
### B CMake SDK
1. SDK `client/include` `client/lib`
2. `src/*.{cpp,c}` `src/CMakeLists.txt` `src/`
`client/`
3.
```bash
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
```
WindowsVisual Studio
```powershell
cmake -S . -B build -A x64
cmake --build build --config Release
```
IoTDB POST_BUILD **
**Linux/macOS `$ORIGIN` rpath
`.so` / `.dylib`
```bash
cmake --build build --target example-dist
# build/dist/ + libiotdb_session.{so,dll,dylib}
```
## SDK
1. **IoTDB **
2. **** **IoTDB ** ****
`build/.../Release/`Windows `build/`Ninja/Make
`example-dist` `build/dist/`
### Windows
****
```
SessionExample.exe
iotdb_session.dll
```
`iotdb_session.dll`
****
- **64 Windows** x64
- **[Microsoft Visual C++ 20152022 x64](https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist)**
SDK **`/MD`** CRT `vcruntime140.dll`
`msvcp140.dll`
** Redistributable ** **** Visual Studio
**** IoTDB SDK Thrift/Boost
****
```powershell
.\SessionExample.exe
```
`VCRUNTIME140.dll` VC++
ThriftBoost `iotdb_session.dll`
### Linux
****
```
SessionExample
libiotdb_session.so
chmod +x SessionExample
```
****
- **glibc SDK glibc **
glibc
****
```bash
ldd --version | head -1
# ldd (Ubuntu GLIBC 2.35-0ubuntu3) 2.35
```
****
```bash
ldd --version | head -1
# >=
```
`GLIBC_`
```bash
objdump -T SessionExample | grep GLIBC_ | sed 's/.*GLIBC_/GLIBC_/' | sort -Vu | tail -5
objdump -T libiotdb_session.so | grep GLIBC_ | sed 's/.*GLIBC_/GLIBC_/' | sort -Vu | tail -5
```
glibc
`version 'GLIBC_2.34' not found`
SDK
****`.so`
```bash
./SessionExample
```
```bash
export LD_LIBRARY_PATH=.
./SessionExample
```
Thrift
### macOS
`libiotdb_session.dylib` macOS
** SDK deployment target**
```bash
otool -L SessionExample
```
##
- **Windows** SDK **`/MD`** Visual Studio
`iotdb_session.lib` `iotdb_session.dll`
- **Linux** `libiotdb_session.so`
`RPATH=$ORIGIN`
- `127.0.0.1:6667`/
##
```
client-cpp-example/
pom.xml # Maven SDK + CMake
README.md #
README_zh.md #
src/
CMakeLists.txt
SessionExample.cpp
AlignedTimeseriesSessionExample.cpp
MultiSvrNodeClient.cpp
tree_example.c
```
`mvn package` `target/` `client/` SDK CMake