news 2026/9/25 16:43:07

【2015-04-27】Linux下使用JNI封装调用已经存在的动态静态库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【2015-04-27】Linux下使用JNI封装调用已经存在的动态静态库

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2015-04-27| 标题:Linux下使用JNI封装调用已经存在的动态静态库|分类:编程 / java / C && C++ |标签:linux·java·jni·动态库·静态库


Linux下使用JNI封装调用已经存在的动态静态库

    • 备注:
    • 封装动态库:
    • 封装静态库:

备注:

本文在以下两片笔记的基础上扩充而来:

【 http://116.62.110.235/blog/linux-dynamic-library-static-library/ 】

【 http://116.62.110.235/blog/linux-jni-simple-example/ 】

封装动态库:

#首先看下当前目录的文件$lsfunctions.c functions.h HelloJni.class HelloJni.java JniSwapper.c JniSwapper.class JniSwapper.h JniSwapper.java#先编译出一个动态库libfunc.so$ gcc functions.c-fPIC-shared-olibfunc.so#在libfunc.so的基础上编译libJniSwapper.so,注意这里需要用-l来表明依赖$ gcc JniSwapper.c-fPIC-shared-I/usr/lib/jvm/java-7-openjdk-amd64/include -L.-lfunc-olibJniSwapper.so $exportLD_LIBRARY_PATH=.:$LD_LIBRARY_PATH$ ldd libfunc.so linux-vdso.so.1=>(0x00007ffd4070f000)libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007f001c307000)/lib64/ld-linux-x86-64.so.2(0x00007f001c8ee000)$ ldd libJniSwapper.so linux-vdso.so.1=>(0x00007ffe161b2000)libfunc.so=>./libfunc.so(0x00007f128ad82000)libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007f128a99f000)/lib64/ld-linux-x86-64.so.2(0x00007f128b188000)#执行$ javac HelloJni.java $javaHelloJni100+200=300

封装静态库:

#编译生成.a$ gcc-cfunctions.c $ ar-rcslibfunc.a functions.o $lsfunctions.c functions.h functions.o HelloJni.class HelloJni.java JniSwapper.c JniSwapper.class JniSwapper.h JniSwapper.java libfunc.a#在libfunc.a的基础上编译libJniSwapper.so,注意这里需要用-l来表明依赖$ gcc JniSwapper.c-fPIC-shared-I/usr/lib/jvm/java-7-openjdk-amd64/include -L.-lfunc-olibJniSwapper.so $exportLD_LIBRARY_PATH=.:$LD_LIBRARY_PATH$ ldd libJniSwapper.so linux-vdso.so.1=>(0x00007ffeceb62000)libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007f54cae40000)/lib64/ld-linux-x86-64.so.2(0x00007f54cb427000)#执行$ javac HelloJni.java $javaHelloJni100+200=300
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 16:41:44

Langchain 从部署到调用各大主流厂商大模型使用详解

目录 一、前言 二、Langchain 介绍 2.1 Langchain 是什么 2.2 为什么要学习 LangChai 2.3 LangChain 的核心组件 2.4 LangChain 分层架构图 2.5 LangChain 使用场景 三、Langchain 安装与使用 3.1 环境准备 3.2 Langchain 安装过程 3.2.1 一键安装依赖包 3.3 对接三…

作者头像 李华
网站建设 2026/9/25 16:37:37

OpenCode+Harness实战:终端智能体与LangChain编排数据分析全流程

最近这半年,圈子里聊得最多的已经不是"哪个模型更强",而是"智能体能不能真的替人把活干完"。OpenCode 是我在这个方向上试用下来最顺手的一个终端智能体工具:它不像网页版 Copilot 那样只会窝在编辑器里补代码&#xff0…

作者头像 李华
网站建设 2026/9/25 16:33:24

Proxmox VE共享存储协议选型与高可用配置指南

1. 为什么共享存储在 Proxmox VE 里不是“配个地址就能用”的事?Proxmox VE 的共享存储,从来就不是把 NFS 地址填进 Web 界面、点一下“扫描”、等它自动列出几个卷就完事的简单操作。我第一次在生产环境部署时,就是照着某篇博客把/etc/fstab…

作者头像 李华
网站建设 2026/9/25 16:32:24

2025半导体并购终止潮:从估值分歧到技术尽调的关键风险

1. 2025年终止并购的整体态势:数量变多,理由变复杂过去几年国内半导体行业的并购一直不太平,但2025年的感觉特别明显:公开披露的终止案例数量肉眼可见地增多,而且终止理由变得五花八门。前几年大家说“并购终止”基本绕…

作者头像 李华
网站建设 2026/9/25 16:32:18

从聊天玩具到能干活同事:构建AI Agent技能库的实战指南

agent-skills:我是怎么把AI智能体从“聊天玩具”调教成“能干活同事”的先说清楚这文章写的是什么:过去几个月,我一直在搞一个叫 agent-skills 的技能库项目。它不是某个大厂发布的框架,也不是什么开箱即用的产品,而是…

作者头像 李华