docker安装CentOS7及JNI使用相关过程记录
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使用相关过程记录的更多相关文章
- Docker安装 - CentOS7环境
Docker安装 - CentOS7环境 安装Docker 我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核 ...
- 一、docker安装CentOS7
一.安装步骤 前提条件 Docker运行在CentOS7上,要求系统64位.系统内核版本为3.10以上. Docker是一个进程,一启动就两个进程,一个服务,一个守护进程.占用资源就非常少,启动速度非 ...
- Docker 安装(centos7下)
下面链接为官方的安装方法(官方的是最好的): https://docs.docker.com/install/linux/docker-ce/centos/#upgrade-docker-after- ...
- docker 安装centos7并SSH远程连接
1.安装centos7 镜像 1.搜索并拉取centos镜像(默认最新镜像) docker search centos docker pull centos 2.建立本机对应docker-centos ...
- docker学习------记录centos7.5下docker安装更换国内源的处理过程
一.centos7.5下更换阿里源 1.装好centos7.5镜像,将yum源更换为阿里源 第一步:刚出的centos7.5是解析不到阿里的东西的,所以找了台centos7.4,下载一些包 (1) 下 ...
- docker安装-centos7
操作系统要求 要安装Docker,您需要64位版本的CentOS 7.步骤: 卸载旧版本 Docker的旧版本被称为docker或docker-engine . 如果这些已安装,请卸载它们以及关联 ...
- win系统下之docker安装centos7镜像
1) 拉取镜像 输入命令docker pull centos:7 从仓库拉取centos7的镜像 2) 查看本地镜像 命令:docker images 可以查看已经把centos的镜像拉取 ...
- Docker安装CentOS7
1. 拉取镜像 docker pull centos:centos7 2. 启动镜像创建容器 docker run -d -p 36622:22 -p 36680:80 --name centos7- ...
- docker安装centos7镜像
拉取centos7镜像[root@localhost ~]# docker pull centos:71启动镜像centos7,如果不指定 /bin/bash,容器运行后会自动停止[root@loca ...
随机推荐
- Angular学习资料大全和常用语法汇总(让后端程序员轻松上手)
前言: 首先为什么要写这样的一篇文章呢?主要是因为前段时间写过一些关于Angualr的相关实战文章,有些爱学习的小伙伴对这方面比较感兴趣,但是又不知道该怎么入手(因为认识我的大多数小伙伴都是后端的同学 ...
- mastercam2018安装教程
安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文. [安装环境]:Win7/Win8/Win10 1.选中[Mastercam2018]压缩包,鼠标右击选择[解压到Ma ...
- ip_hash(不推荐使用) 会话粘性问题分析 Cookie 的 Session Sticky
Nignx 连接tomcat时会话粘性问题分析_changyanmanman的专栏-CSDN博客_后端tomcat导致 前端elb中断 https://blog.csdn.net/cymm_liu/a ...
- 入 Go 必读:大型Go工程的项目结构及实战思考 原创 毛剑 QCon 今天
入 Go 必读:大型Go工程的项目结构及实战思考 原创 毛剑 QCon 今天
- (转载)微软数据挖掘算法:Microsoft 决策树分析算法(1)
微软数据挖掘算法:Microsoft 目录篇 介绍: Microsoft 决策树算法是分类和回归算法,用于对离散和连续属性进行预测性建模. 对于离散属性,该算法根据数据集中输入列之间的关系进行预测. ...
- SpringBoot Web 学习
SpringBoot Web 开发 静态资源 打开WebMvcAutoConfiguration类里面的静态类WebMvcAutoConfigurationAdapter里面的addResourceH ...
- js控制页面元素值
// TODO id 定位 var ele1 = document.getElementById("test1"); // alert(ele1.value) // TODO 根据 ...
- noip 注意事项 (个人向)
目录 非常重要 对拍 空间 极限数据 模数,YES/NO等大小写 个人 考场 神仙 czdzx 说要写,我也来写 非常重要 对拍 空间 极限数据 模数,YES/NO等大小写 个人 养身体,不要紧张,不 ...
- HTML5 网页制作技巧
本文总结自由人民邮电出版社出版的<HTML.CSS.Javascript网页制作>. 总结进行学习,并分享给同样编写HTML5的朋友. 1:背景音乐的添加 <embed src=&q ...
- jQuery.qrcode二维码插件生成网页二维码
如果是一个固定的二维码,我们只需要在网上找个地方生成图片,然后放上图片就可以了.但如果是地址不固定需要根据页面来生成的话.就有两种做法,一个是后端根据页面做一个动态的二维码.一种是前端使用插件生成. ...