hp-ux-ia64:jffi/ffi 编译总结
在HP-UX-IA64下编译JFFI及FFI遇到很多问题,官网jffi文档中也并没有在hp-ux-ia64平台上有编译过。
次文档仅为记录之用。记录编译过程,但并不意味着本人遇到的问题已经解决。
注意点:
1. hpux上装的gcc 4.3.2.编译时默认是32位。编64位需要加参数: -mlp64
2. hpux上的jdk(1.6)目录结构与linux上jdk目录不一致。64位版本java/javac/javah命令行在$JAVA_HOME/bin/IA64W目录下。ant启用$JAVA_HOME/bin的java命令,默认是32位的。解决的方法可以建文件夹然后 ln -s 三个命令连接,修改相应的$JAVA_HOME。
3. ant jar生成complete.jar,jffi.jar 等jar包时,脚本能识别机器。但是jffi的java代码里面并不支持ia-64-hpux导致打包的目录是unknown-HP-UX.查看jffi-1.2.7/src/main/java/com/kenai/jffi/internal/StubLoader.java文件,源代码中CPU未定义IA64,OS也未定义HPUX。导致取不到CPU,OS值是unknown。
如不改源代码。build.xml中需要修改打jar包时的目录。否则ant test会报can't load jni/unknown-HP-UX/libjffi-1.2.so文件
4.需要修改makefile内容及.h头文件如下:
export CC="gcc -mbig-endian -mlp64 -pthread"
export LD="gcc -shared -fPIC -mbig-endian -mlp64 -mt -static-libgcc -Wl -O1 -lrt -ldl -lpthread"
jffi-1.2.7/GNUmakefile
SRC_DIR ?= $(shell pwd)/jni
==>
SRC_DIR ?= $(shell pwd)
JFLAGS = -fno-omit-frame-pointer -fno-strict-aliasing -DNDEBUG
==>
JFLAGS = -fno-omit-frame-pointer -fno-strict-aliasing -DNDEBUG -DMAP_ANON=MAP_ANONYMOUS -DFFI_NATIVE_RAW_API=0
FFI_CC = $(CCACHE) $(CC)
==>
FFI_CC = $(CC)
jffi-1.2.7/libtest/GNUmakefile
$(CCACHE) $(CC) $(CFLAGS) -c $< -o $@
==>
$(CC) $(CFLAGS) -c $< -o $@
SOFLAGS = -shared -Wl,-O1
==>
SOFLAGS = -shared -Wl -O1
jffi-1.2.7/jni/jffi/endian.h
添加
# define LITTLE_ENDIAN 1234
# define BIG_ENDIAN 4321
# define BYTE_ORDER BIG_ENDIAN
jffi-1.2.7/jni/jffi/jffi.h
添加,免得很多文件都要加这个.h文件
#include <alloca.h>
jffi-1.2.7/jni/jffi/LongDouble.c
ld = strtold(tmp, NULL);
==>此处修改有点不负责任。128位的long double改成64位的double。实际应该用得不多,先将就下。。。
ld = strtod(tmp, NULL);
hp-ux-ia64:jffi/ffi 编译总结的更多相关文章
- Oracle 11203 + ASM安装 for HP UX
一,安装前准备 1.创建所需组和用户 /usr/sbin/groupadd -g 1000 oinstall/usr/sbin/groupadd -g 1020 asmadmin/usr/sbin/g ...
- 编译安装tree命令
查看当前的tree [12:33:33 root@C8[ ~]#rpm -qi tree Name : tree Version : 1.7.0 Release : 15.el8 Architectu ...
- hp unix_ssh
http://www.cyberciti.biz/faq/howto-hpux-sshd-service-startup-shutdown/ http://searchnetworking.techt ...
- Ubuntu 15.04 编译UE4 for Linux版
源 起 Unreal Engine 4 是全球最先进的Realtime Illumination & Physical 引擎: 长期以来,UE4都只有Windows版和Mac版,今年终于向Li ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- (转)使用 SCons 轻松建造程序
在软件项目开发过程中,make 工具通常被用来建造程序.make 工具通过一个被称为 Makefile 的配置文件可以自动的检测文件之间的依赖关系,这对于建造复杂的项目非常有帮助,然而,编写 Make ...
- 2.Nginx优化
[教程主题]:Nginx优化 [课程录制]: 创E [主要内容] Nginx 优化 nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine ...
- 循序渐进Python3(一)-- 初识Python
一.Python起源
- Nginx工作原理和优化
转自:http://blog.csdn.net/hguisu/article/details/8930668 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过 ...
随机推荐
- 五、C# 类
面向对象编程 类是面向对象编程的3个主要特征---封装.继承和多态性---的基础. 封装允许隐藏细节. 继承 继承关系至少涉及两个类,其中一个类(基类)是另一个类的更泛化的版本. 为了从一 ...
- MyBatis学习笔记(2)——缓存
一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域为Session,当Session flush或 close之后,该Session 中的所有Cache将被清空 二级缓存 ...
- JS判断鼠标从哪个方向进入DIV容器
写的不够高大上 , 不要介意哦... Js: //进去 $(".flash").bind("mouseenter",function(e){ /** the w ...
- jquery 与其他库冲突解决方案
var j = jQuery.noConflict(); j("div p").hide(); // 基于 jQuery 的代码 $("content").st ...
- 浅谈多核CPU、多线程、多进程
1.CPU发展趋势 核心数目依旧会越来越多,依据摩尔定律,由于单个核心性能提升有着严重的瓶颈问题,普通的桌面PC有望在2017年末2018年初达到24核心(或者16核32线程),我们如何来面对这突如其 ...
- 转:Mysql在大型网站的应用架构演变
原文来自于:http://www.cnblogs.com/Creator/p/3776110.html 原创文章,转载请注明: 转载自http://www.cnblogs.com/Creator/本文 ...
- jQuery插件infinitescroll参数【无限翻页】
转自:http://blog.163.com/penglie_520/blog/static/19440505020127255319862/ infinite-scroll-jquery 参数详解: ...
- 【Maven实战】仓库介绍和Nexus的安装
在Maven中我们之前进行配置一个项目的依赖时,引用一下jar包,这些jar包第一次都会从一个地方进行下载,这个地方称为仓库,而对于仓库一般有本地仓库和中心仓库之分,但是我们一般在做项目时会在自己的服 ...
- RUBY类特性
学习教材 class Person def initialize(name,age=18) @name=name @age=age @motherland="China" end ...
- 玩死人不偿命的CLOUDSTACK
玩过CLOUDSTACK(CS)的人,一定不会陌生下面的LOG: 2013-12-27 18:26:43,861 DEBUG [allocator.impl.FirstFitAllocator] (J ...