docker pull centos:centos7(拉取镜像)

docker run -itd --name centos-test centos:centos7 (运行容器)

docker exec -it centos-test /bin/bash (进入容器)

举例使用JNI调用c++ googleS2:

(安装编译c++版本googlS2依赖)

yum -y install cmake libgflags-dev libgoogle-glog-dev libgtest-dev libssl-dev(其中yum源应该是没有libssl-dev这个包)

(拷贝预先下载的本地文件到centos:

docker ps(查看容器名字centos-test)

docker inspect -f '{{.Id}}' centos-test(根据名字获得CONTAINER ID 完整ID:87880fa28f280a5a01712d4104d8ed31700363b10dd784aaafbb6abc6428aad5)

docker cp /本机绝对路径/googletest-release-1.8.0.tar.gz 87880fa28f280a5a01712d4104d8ed31700363b10dd784aaafbb6abc6428aad5:/root/googletest-release-1.8.0.tar.gz

)

tar xvzf googletest-release-1.8.0.tar.gz

mkdir googleS2

cd googleS2/

(安装git:

yum install git

git config --global user.name “名字”

git config --global user.email 邮箱)

git clone https://github.com/google/s2geometry.git

cd s2geometry/

mkdir build

cd build/

cmake -DGTEST_ROOT=/root/googletest-release-1.8.0/googletest/ ..

(出错,原因cmake版本太低,升级:

cd /opt/

(安装wget:

yum -y install wget)

wget https://cmake.org/files/v3.10/cmake-3.10.2-Linux-x86_64.tar.gz

yum remove cmake

tar zxvf cmake-3.10.2-Linux-x86_64.tar.gz

vi /etc/profile.d/cmake.sh

写入:

export CMAKE_HOME=/opt/cmake-3.10.2-Linux-x86_64

export PATH=$PATH:$CMAKE_HOME/bin

保存退出

source /etc/profile

cmake -version

可查看到最新的cmake版本

cd /root/googleS2/s2geometry/build/

cmake -DGTEST_ROOT=/root/googletest-release-1.8.0/googletest ..

(缺少g++编译器,安装:

yum install gcc

yum install gcc-c++

yum install make

)

cmake -DGTEST_ROOT=/root/googletest-release-1.8.0/googletest ..

(缺少openssl安装:

yum install openssl

yum install openssl-devel)

cmake -DGTEST_ROOT=/root/googletest-release-1.8.0/googletest ..

make

make test

sudo make install

centos7安装java1.8

yum install java-1.8.0-openjdk

yum install java-devel

update-alternatives --config java

之后就可以进行正常的JNI开发了。

vi LinuxJNI.java

public class LinuxJNI{
public native void sayHello(); static {
System.load("/绝对路径/libs2.so");//当libs2.so变更存放位置时需要明确指定,默认安装位置是/usr/local/lib/libs2.so,可以不指定
System.load("/root/googleS2/s2geometry/src/liblinuxjni.so");
}
public static void main(String[] args){
System.out.println("hello world");
LinuxJNI lj = new LinuxJNI();
lj.sayHello();
}
}

javac LinuxJNI.java

javah LinuxJNI(获得LinuxJNI.h)

vi LinuxJNI.cc

#include <iostream>
#include "LinuxJNI.h"
#include "s2/s2polyline.h"
#include "s2/s2latlng.h"
#include <vector> using namespace std; JNIEXPORT void JNICALL Java_LinuxJNI_sayHello (JNIEnv *, jobject){
cout << " hello from jni" << endl; S2LatLng latlng_one = S2LatLng::FromDegrees(39.965377,116.392767);
S2LatLng latlng_two = S2LatLng::FromDegrees(39.968699,116.400642);
S2LatLng latlng_three = S2LatLng::FromDegrees(39.968929,116.407616); S2LatLng line[] = {latlng_one,latlng_two,latlng_three};
const vector<S2LatLng> s2line(line,line+3);
S2Polyline s2Polyline = S2Polyline(s2line); //S2Polyline 相关方法使用
     ......
}

g++ -fPIC -D_REENTRANT -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/include/linux/ -std=c++11 -c LinuxJNI.cc

g++ -shared -o liblinuxjni.so LinuxJNI.o /usr/local/lib/libs2.so

objdump -x liblinuxjni.so | grep NEEDED (检查是否依赖libs2.so成功)

java LinuxJNI 查看运行结果。

docker安装CentOS7及JNI使用相关过程记录的更多相关文章

  1. Docker安装 - CentOS7环境

    Docker安装 - CentOS7环境 安装Docker 我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核 ...

  2. 一、docker安装CentOS7

    一.安装步骤 前提条件 Docker运行在CentOS7上,要求系统64位.系统内核版本为3.10以上. Docker是一个进程,一启动就两个进程,一个服务,一个守护进程.占用资源就非常少,启动速度非 ...

  3. Docker 安装(centos7下)

    下面链接为官方的安装方法(官方的是最好的): https://docs.docker.com/install/linux/docker-ce/centos/#upgrade-docker-after- ...

  4. docker 安装centos7并SSH远程连接

    1.安装centos7 镜像 1.搜索并拉取centos镜像(默认最新镜像) docker search centos docker pull centos 2.建立本机对应docker-centos ...

  5. docker学习------记录centos7.5下docker安装更换国内源的处理过程

    一.centos7.5下更换阿里源 1.装好centos7.5镜像,将yum源更换为阿里源 第一步:刚出的centos7.5是解析不到阿里的东西的,所以找了台centos7.4,下载一些包 (1) 下 ...

  6. docker安装-centos7

    操作系统要求 要安装Docker,您需要64位版本的CentOS 7.步骤:   卸载旧版本 Docker的旧版本被称为docker或docker-engine . 如果这些已安装,请卸载它们以及关联 ...

  7. win系统下之docker安装centos7镜像

    1)    拉取镜像 输入命令docker pull centos:7 从仓库拉取centos7的镜像 2)    查看本地镜像 命令:docker images 可以查看已经把centos的镜像拉取 ...

  8. Docker安装CentOS7

    1. 拉取镜像 docker pull centos:centos7 2. 启动镜像创建容器 docker run -d -p 36622:22 -p 36680:80 --name centos7- ...

  9. docker安装centos7镜像

    拉取centos7镜像[root@localhost ~]# docker pull centos:71启动镜像centos7,如果不指定 /bin/bash,容器运行后会自动停止[root@loca ...

随机推荐

  1. VBA调用数独求解器

    我开发了一个用于求解数独的dll文件,只需要双击一下注册表文件,就可以在VBA中调用这个功能了.具体步骤如下: 下载:https://share.weiyun.com/5dpcNqx 找到ExcelS ...

  2. Canal介绍以及应用

    Canal介绍以及应用 应用场景: canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署, ...

  3. Why failover-based implementations are not enough Redis分布式锁实现 SET resource_name my_random_value NX PX 30000

    核心 SET resource_name my_random_value NX PX 30000 Distributed locks with Redis – Redis https://redis. ...

  4. (转载)微软数据挖掘算法:Microsoft 时序算法之结果预测及其彩票预测(6)

    前言 本篇我们将总结的算法为Microsoft时序算法的结果预测值,是上一篇文章微软数据挖掘算法:Microsoft 时序算法(5)的一个总结,上一篇我们已经基于微软案例数据库的销售历史信息表,利用M ...

  5. fastjson的deserializer的主要优化算法 漏洞

    JSON最佳实践 | kimmking's blog http://kimmking.github.io/2017/06/06/json-best-practice/ Fastjson内幕 Java综 ...

  6. Mycat 配置文件解析

    Mycat 配置文件解析 一.server.xml 二.schema.xml 2.1 schema.xml文件中配置的参数解释 2.1.1 DataHost 2.1.2 DataNode 2.1.3 ...

  7. java架构《并发线程中级篇》

    java多线程的三大设计模式 本章主要记录java常见的三大设计模式,Future.Master-Worker和生产者-消费者模式. 一.Future模式 使用场景:数据可以不及时返回,到下一次实际要 ...

  8. php小项目-web在线文件管理器

    php小项目-web在线文件管理器 一 项目结果相关视图 二 项目经验 通过简单的实现小项目,对php的文件相关操作更加熟悉,主要用于熟悉文件的相关操作 三 源代码下载地址 http://files. ...

  9. mysql高级day4

    Mysql高级-day04 1. MySql中常用工具 1.1 mysql 该mysql不是指mysql服务,而是指mysql的客户端工具. 语法 : mysql [options] [databas ...

  10. Python Line Messaging Api

    Line Messaging line 是国外一个很火的实时通信软件,类似与WX,由于公司业务需求,需要基于line开发一个聊天平台,下面主要介绍关于line messaging api 的使用. 官 ...