如何使用编译器 g++-8.2 编译 Hazelcast C++ 客户端
How can I compile Hazelcast C++ Client with the compiler g++-8.2
对于使用 Hazelcast C++ client library 的项目,是否有任何解决方案可以使用 g++-8.2
进行编译?
如果我用g++-8.2编译它,它会显示很多错误"undefined reference ..."。
在使用g++-4.9时效果很好。
这个问题有点像这个google group forum中的讨论,说明编译错误是因为编译器的版本不对。
但是,编译器 g++-4.9 对我来说太旧了,无法构建我的大项目。
示例代码可以在official org website中找到,如果有人需要试一试。
感谢您报告此问题。我们没有使用 g++-8.2 编译器进行测试。我打开了一个问题来解决问题:https://github.com/hazelcast/hazelcast-cpp-client/issues/494
你能告诉我你的 OS 环境吗?它是什么发行版和版本?
我终于通过将库从 3.10 升级到 3.11 解决了这个问题。
3.11 库是使用 Github 中 Hazelcast source code 中的 g++-8.2
手动构建的。
因为构建hazelcast-cpp-clienet包后没有make install
,所以我用一些脚本把header个文件放在一个目录下(hazelcast-cpp-client/include
) 这样一个程序就可以轻松地 link 库和 headers.
构建脚本:
#!/bin/bash
# Package Requirements:
# - asio
mkdir hazelcast-cpp-client ; cd hazelcast-cpp-client
# Build
git clone https://github.com/hazelcast/hazelcast-cpp-client.git
mv hazelcast-cpp-client tmp
cd tmp
git checkout v3.11
mkdir release ; cd release
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=Release ..
make
# Back to 'hazelcast-cpp-client' directory
cd ../..
# Copy .a library out from tmp/
cp tmp/release/*.a .
# Arrange all header files in an one directory
cp -r tmp/hazelcast/include .
cp -r tmp/hazelcast/generated-sources/include/hazelcast/client/protocol ./include/hazelcast/client
rm tmp/external/include/*.md # We don't need readme file
cp -r tmp/external/include/* ./include
# Delete tmp directory
rm -rf tmp
编译命令如下:
g++ -std=c++11 \
-I/path/to/hazelcast-cpp-client/include \
hz_test.cpp \
/path/to/hazelcast-cpp-client/libHazelcastClient3.11_64.a \
-lpthread
对于使用 Hazelcast C++ client library 的项目,是否有任何解决方案可以使用 g++-8.2
进行编译?
如果我用g++-8.2编译它,它会显示很多错误"undefined reference ..."。
在使用g++-4.9时效果很好。
这个问题有点像这个google group forum中的讨论,说明编译错误是因为编译器的版本不对。
但是,编译器 g++-4.9 对我来说太旧了,无法构建我的大项目。
示例代码可以在official org website中找到,如果有人需要试一试。
感谢您报告此问题。我们没有使用 g++-8.2 编译器进行测试。我打开了一个问题来解决问题:https://github.com/hazelcast/hazelcast-cpp-client/issues/494
你能告诉我你的 OS 环境吗?它是什么发行版和版本?
我终于通过将库从 3.10 升级到 3.11 解决了这个问题。
3.11 库是使用 Github 中 Hazelcast source code 中的 g++-8.2
手动构建的。
因为构建hazelcast-cpp-clienet包后没有make install
,所以我用一些脚本把header个文件放在一个目录下(hazelcast-cpp-client/include
) 这样一个程序就可以轻松地 link 库和 headers.
构建脚本:
#!/bin/bash
# Package Requirements:
# - asio
mkdir hazelcast-cpp-client ; cd hazelcast-cpp-client
# Build
git clone https://github.com/hazelcast/hazelcast-cpp-client.git
mv hazelcast-cpp-client tmp
cd tmp
git checkout v3.11
mkdir release ; cd release
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=Release ..
make
# Back to 'hazelcast-cpp-client' directory
cd ../..
# Copy .a library out from tmp/
cp tmp/release/*.a .
# Arrange all header files in an one directory
cp -r tmp/hazelcast/include .
cp -r tmp/hazelcast/generated-sources/include/hazelcast/client/protocol ./include/hazelcast/client
rm tmp/external/include/*.md # We don't need readme file
cp -r tmp/external/include/* ./include
# Delete tmp directory
rm -rf tmp
编译命令如下:
g++ -std=c++11 \
-I/path/to/hazelcast-cpp-client/include \
hz_test.cpp \
/path/to/hazelcast-cpp-client/libHazelcastClient3.11_64.a \
-lpthread