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. UINavigationController导航栏按钮设置

    UINavigationController常见属性 1.一般情况下,导航栏上面显示什么内容,由当前栈顶控制器的navigationItem属性决定 * navigationItem.title : ...

  2. request中文乱码解决

    String str = new String(request.getParameter("参数名").getBytes("iso-8859-1"), &quo ...

  3. python + eclipse + django + postgresql 开发网站(一)

    一.配置开发环境 1.安装Python 载地址下:http://www.python.org/getit/

  4. 安装Apache PHP MySQL PHPMyAdmin

    视频教程:https://www.youtube.com/watch?v=FJC2iGt_2bc,Youtube看不了的FQ吧-3- 本人参考这篇文章:http://blog.csdn.net/kno ...

  5. WEB开发中一些常见的攻击方式及简单的防御方法

    WEB开发中一些常见的攻击方式及简单的防御方法 转载:http://blog.csdn.net/seven__________7/article/details/70896913

  6. 洛谷 P1324 矩形分割

    P1324 矩形分割 题目描述 出于某些方面的需求,我们要把一块N×M的木板切成一个个1×1的小方块. 对于一块木板,我们只能从某条横线或者某条竖线(要在方格线上),而且这木板是不均匀的,从不同的线切 ...

  7. cogs 1396. wwww

    1396. wwww ☆   输入文件:wwww.in   输出文件:wwww.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 对于一个递归函数w(a,b,c) 如果 ...

  8. (七十一)关于UITableView退出崩溃的问题和滚动究竟部的方法

    [TableView退出崩溃的问题] 近期在使用TableView时偶然发如今TableView中数据较多时,假设在滚动过程中退出TableView到上一界面.会引起程序的崩溃.经过网上查阅和思考我发 ...

  9. HH生病了(hpu1136)

    HH生病了 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 324  Solved: 90 [Submit][Status][Web Board] De ...

  10. 华为荣耀3C最新版ROM的root,(4.7.1和4.8.1等等通用方法)

    手头一台honor 3c的机器.应该是线刷的时候,把IMEI给刷掉了.导致移动2G卡无法上网. 刷了4.7.1或者4.8.1.尝试了全部方法都root失败了. 正好我手头有6582的代码.我想.既然系 ...