CMake - SWIG

最后更新日期:2014-04-25 bykagula

阅读前提:《CMake入门(二)》、《同Java的混合编程-SWIG》、Linux的基本操作、java基础知识

环境:Windows 8.1 64bit英文版,Visual Studio 203 Update1英文版,CMake 2.8.12.2、 Cent OS 6.5、SWIG 3.0.0。

内容简单介绍

         介绍本人在《同Java的混合编程-SWIG》这篇笔记上提到的SWIG_Tutorial4和SWIG_Tutorial4_Java项目怎样移到Cent OS上。

 

正文

用Visual Studio打开SWIG_Tutorial4项目。在项目中加入CMakeLists.txt文件

#设置项目名称

PROJECT(SWIG_Tutorial4)

 

#要求CMake的最低版本号为2.8

CMAKE_MINIMUM_REQUIRED(VERSION
2.8)

 

#加入头文件搜索路径

#以下两个是Cent OS下Java开发包的默认头文件路径

INCLUDE_DIRECTORIES(/usr/lib/jvm/java/include)

INCLUDE_DIRECTORIES(/usr/lib/jvm/java/include/linux)

 

#加入库文件搜索路径

#以下两个是Cent OS下Java开发包的默认库文件路径

LINK_DIRECTORIES(/usr/lib/jvm/java/lib)

 

 

#用于将当前目录下的全部源文件的名字保存在变量 DLL_SRC中

AUX_SOURCE_DIRECTORY(. DLL_SRC)

 

#用于指定从一组源文件 source1 source2 …sourceN(在变量DLL_SRC中定义)

#依据“SWIG_Tutorial4”名称编译出“libSWIG_Tutorial4.so”名称的动态链接库

#假设以下不加SHARED那编译出的是“libSWIG_Tutorial4.a”静态链接库

ADD_LIBRARY(SWIG_Tutorial4SHARED
${DLL_SRC})

 

在Cent OS上安装java开发环境

#yum install java java-devel

能够使用以下的命令查看java 安装路径

$echo $JAVA_HOME

把SWIG_Tutorial4项目整个目录,拷贝到Cent OS上,并编译

$cd SWIG_Tutorial4

$mkdir build

$cd build

$cmake ..

$make

如今当前目录中就有了libSWIG_Tutorial4.so文件。 Linux下的动态链接库一般用so扩展名,相当于Windows下的DLL文件。

 

測试动态链接库

Cents OS下java.library.path缺省指向/usr/java/packages/lib/i386、/lib、/usr/lib三个目录。java程序会从这三个路径中去寻找动态链接库。所以我们把libSWIG_Tutorial4.so文件拷贝到/usr/lib路径中。

把Win系统上的SWIG_Tutorial4_Java项目整个源目录上传到Cent OS系统。

以下是SWIG_Tutorial4_Java项目目录树

SWIG_Tutorial4_Java

│  .classpath

│  .project

│  SWIG_Tutorial4.dll

│

├─.settings

│     org.eclipse.jdt.core.prefs

│

├─bin

│      HelloWorldFromC.class

│      MyJavaClass.class

│      SWIG_Tutorial4.class

│      SWIG_Tutorial4JNI.class

│

└─src

       HelloWorldFromC.java

       MyJavaClass.java

       SWIG_Tutorial4.java

       SWIG_Tutorial4JNI.java

进入以下目录

/home/kagula/Downloads/SWIG_Tutorial4_Java/bin

能够看到

HelloWorldFromC.class, MyJavaClass.class, SWIG_Tutorial4.class,SWIG_Tutorial4JNI.class四个文件。

使用以下的命令。调用java程序

$java MyJavaClass

就能够看到程序执行结果

 

參考资料

[1]《Tokyo Cabinet的安装,含Java版(Cent OS 5.4)》

http://www.coder4.com/archives/818

[2]《JNI Hello World 简单记录》-使用Open JDK + GCC做的第一个java程序

http://blog.csdn.net/acnt3w/article/details/8590300

CMake - SWIG - 移植动态库的更多相关文章

  1. cmake之生成动态库

    演示源码下载地址: https://github.com/mohistH/demo_cmake_dylib 把文仅为参考. 以实际情况为准 1.目录结构 │ CMakeLists.txt │ inde ...

  2. Unity跨平台C/CPP动态库编译---可靠UDP网络库kcp基于CMake的各平台构建实践

    1.为什么需要动态库 a)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. b)某 ...

  3. Unity3D跨平台动态库编译---记kcp基于CMake的各平台构建实践

    一 为什么需要动态库 1)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. 2)某 ...

  4. 《CMake实践》笔记三:构建静态库(.a) 与 动态库(.so) 及 如何使用外部共享库和头文件

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  5. (转)HelloWorld CMake CMake中构建静态库与动态库及其使用

    继续完善Hello World,建立它的共享库, 包括静态库和动态库. 本节的任务: 1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc 向终端输出Hello ...

  6. 1. CMake 系列 - 从零构建动态库和静态库

    目录 1. 文件目录结构 2. 库文件源代码 3. 编译生成库文件 1. 文件目录结构 首先创建如下目录结构: └── lib ├── build # ├── CMakeLists.txt └── s ...

  7. CMake设置生成vs工程的动态库输出路径

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在网上搜了很多的资料,发现CMake不能设置一个动态库工程的输出目录和中间目录,难道除了VC之外其它编译器如gcc中没 ...

  8. 1、opencv3.3.0和cmake安装步骤(按照以下步骤安装后仅能在PC上运行,动态库也是PC端的属性)

    1.下载安装CMake for Linux 下载地址:https://cmake.org/download/ 我下载的版本是,下载文件cmake-3.11.1.tar.gz ./bootstrap m ...

  9. cmake配置项目引用动态库

    note 本文将介绍使用FIND_PACKAGE配置项目动态库的方法 cmake version: 3.18 platform: win10 20H2 概述 创建了一个动态库,再由主项目调用该动态库. ...

随机推荐

  1. Json与JsonPath

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因为它良好的可读性与易于机器进行解析和生成等特性,在当前的数据整理和收集中得到了广泛的应用. JSON和XM ...

  2. 怎样用redis实现分布式锁

    引子 redis作为一个强大的key/value数据库.事实上还能够用来实现轻量级的分布式锁. 1.实现方案1 最早官方在SETNX命令页给了一个实现: acquire lock: SETNX loc ...

  3. atitit.jndi的架构与原理以及资源配置and单元測试实践

    atitit.jndi的架构与原理以及资源配置and单元測试实践 1. jndi架构 1 2. jndi实现原理 3 3. jndi资源配置 3 3.1. resin  <database> ...

  4. Spark Tachyon的命令行使用

    Tachyon命令行使用 Tachyon接口说明 接口操作示例 copyFromLocal copyToLocal ls和lsr count cat mkdir.rm.rmr和touch pin和un ...

  5. JeeSite信息化快速开发平台

     平台简介 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台. JeeSite是您快速完成项目的最佳基础平台解决方案,JeeSite是您 ...

  6. 在物理 Data Guard 中对异构主备系统的支持 (文档 ID 1602437.1)

    Data Guard中主数据库与物理备用数据库(Redo Apply)之间可以有什么差别?本说明针对重做应用和 Oracle Data Guard 12 发行版 1 进行了更新.它适用于 Oracle ...

  7. Flex 转载

  8. UVa10397_Connect the Campus(最小生成树)(小白书图论专题)

    解题报告 题目传送门 题意: 使得学校网络互通的最小花费,一些楼的线路已经有了. 思路: 存在的线路当然全都利用那样花费肯定最小,把存在的线路当成花费0,求最小生成树 #include <ios ...

  9. 经验之谈—让你看明确block

    事实上我感觉不常常使用block的朋友.对block应该是比較陌生的,那么如今我们来扒开block的真面目,看看block的本质 普通的局部变量.block内部仅仅会引用它初始的值(block定义那一 ...

  10. js37---Function.prototype

    //给函数的prototype新增名字为name,函数体为fn的函数 Function.prototype.method =function(name,fn){ this.prototype[name ...