如何在 CMake 上编译 Ignite 应用程序?

how to compile Ignite application on CMake?

我确实成功编译了 Ignite 应用程序。 但是二进制文件没有用。

/tmp/tmp.Nw0IPD6ru3/cmake-build-debug-local-container/planet_engine: error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory

我怎样才能让它发挥作用?

另外,我成功编译了C++ Examples。例如 ignite-compute-example。 而且,我执行了它,但我收到了一条错误消息。 An error occurred: JVM library is not found (did you set JAVA_HOME environment variable?)

我使用的是夜间发布版本 2.8.0.20190213,因为我无法在我的环境中构建到版本 2.7。

我把环境值贴下来了。

IGNITE_HOME=
TERM=xterm-256color
SHELL=/bin/bash 
LIBRARY_PATH=/root/jre1.8.0_201/lib/amd64/server:/root/jre1.8.0_201/lib/amd64/
LC_NUMERIC=ko_KR.UTF-8
SSH_TTY=/dev/pts/0
JRE_HOME=/root/jre1.8.0_201
USER=root
LS_COLORS=rs=0:d...
LD_LIBRARY_PATH=/root/jre1.8.0_201/lib/amd64/server:/root/jre1.8.0_201/lib/amd64/
CLASS_PATH=/root/jdk-11.0.2/lib:
LC_TELEPHONE=ko_KR.UTF-8
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/jdk-11.0.2/bin
LC_IDENTIFICATION=ko_KR.UTF-8 
JAVA_HOME=/root/jdk-11.0.2
LANG=en_US.UTF-8
LC_MEASUREMENT=ko_KR.UTF-8
JDK_HOME=/root/jdk-11.0.2/lib
SHLVL=1
HOME=/root
LOGNAME=root 
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_TIME=ko_KR.UTF-8
LC_NAME=ko_KR.UTF-8
_=/usr/bin/env 

感谢您的阅读。 :)

我明白了。

我正在 docker 容器环境中工作。

因此我使用 ssh 和 gdb 进行远程构建和调试。

终于找到了为什么找不到libjvm.so以及为什么不能读取环境值如JAVA_HOME.

因为它目前在 gdb 中工作。

我确认它在没有 gdb 的情况下也能正常工作。

我会找到解决办法的。 并且,如果我被发现,我会更新答案。


[已解决]

我分享我是如何解决这个问题的。

我通过源安装使用 Oracle JDK-11。

但 Ignite C++ 客户端需要与最新发布的 jdk 版本不同的东西。

Ignite 需要这样的目录结构

JAVA_HOME/ (as JDK install directory)
  - jre/
    - lib/
  - lib/
  ...

我通过apt install openjdk-8-jdk解决了。 openjdk-8-jdk 有 Ignite 需要的结构。

我在 /etc/environment 添加了 JAVA_HOME、IGNITE_HOME。

终于成功了。

但我遇到了另一个问题。哈哈 我好难过

这也是GDB的问题..