首页 > 代码库 > CMake - SWIG - 移植动态库

CMake - SWIG - 移植动态库

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 OSJava开发包的默认头文件路径

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

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

 

#添加库文件搜索路径

#下面两个是Cent OSJava开发包的默认库文件路径

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 - 移植动态库