在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 编译总结的更多相关文章

  1. Oracle 11203 + ASM安装 for HP UX

    一,安装前准备 1.创建所需组和用户 /usr/sbin/groupadd -g 1000 oinstall/usr/sbin/groupadd -g 1020 asmadmin/usr/sbin/g ...

  2. 编译安装tree命令

    查看当前的tree [12:33:33 root@C8[ ~]#rpm -qi tree Name : tree Version : 1.7.0 Release : 15.el8 Architectu ...

  3. hp unix_ssh

    http://www.cyberciti.biz/faq/howto-hpux-sshd-service-startup-shutdown/ http://searchnetworking.techt ...

  4. Ubuntu 15.04 编译UE4 for Linux版

    源 起 Unreal Engine 4 是全球最先进的Realtime Illumination & Physical 引擎: 长期以来,UE4都只有Windows版和Mac版,今年终于向Li ...

  5. 【夯实Nginx基础】Nginx工作原理和优化、漏洞

    本文地址 原文地址 本文提纲: 1.  Nginx的模块与工作原理    2.  Nginx的进程模型    3 . NginxFastCGI运行原理        3.1 什么是 FastCGI   ...

  6. (转)使用 SCons 轻松建造程序

    在软件项目开发过程中,make 工具通常被用来建造程序.make 工具通过一个被称为 Makefile 的配置文件可以自动的检测文件之间的依赖关系,这对于建造复杂的项目非常有帮助,然而,编写 Make ...

  7. 2.Nginx优化

    [教程主题]:Nginx优化 [课程录制]: 创E [主要内容] Nginx 优化 nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine ...

  8. 循序渐进Python3(一)-- 初识Python

    一.Python起源                

  9. Nginx工作原理和优化

    转自:http://blog.csdn.net/hguisu/article/details/8930668 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过 ...

随机推荐

  1. 基于bootstrap的轮播广告页,带图片和文字

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...

  2. css样式之背景图片

    1.css样式背景之使用图片来做为背景 example: <!DOCTYPE html> <html> <head> <meta http-equiv=&qu ...

  3. html.ex.day02

    1.同一个目录内页面跳转 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  4. struts2学生信息管理系统篇章④

    把util包中的代码做了一下注释,分享一下 DateUtil 类 package com.java1234.util; import java.text.SimpleDateFormat; impor ...

  5. 关于android MTK相机L版本,切换屏幕比例后,分辨率随之改变,但重新进入相机后原有分辨率不再生效问题

    BUG详细:比如4:3的时候是200W,切成全屏变400W,重新切回4:3为300W,退出相机后,重新进入又变成200W. 原因分析:这个版本的设计如此,当你点选屏幕比例的时候,程序设计是把这个比例值 ...

  6. SQL利用临时表实现动态列、动态添加列

    --方法一--------------------------------------------------------------------- declare @sql as varchar(1 ...

  7. Active控件有关问题

    ActiveX 控件是允许网站提供视频等内容的网站. 当你浏览 Web 时,它们允许你使用工具栏.股票代号.视频和其它内容. 但是,这些程序有时可能出现问题,或者向你提供不需要的内容. 在某些情况下, ...

  8. 【USACO 1.4.4】母亲的牛奶

    [题目描述]  农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,约翰把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原 ...

  9. Java中的ExceptionInInitializerError异常及解决方法

    当在静态初始化块中出现了异常的时候,JVM会抛出 java.lang.ExceptionInInitializerError异常.如果你了解Java中的静态变量,你会知道它们是在类加载的时候进行初始化 ...

  10. 获取当前元素节点的position和宽高(兼容)

    function objxy(n){ var o=document.getElementById(n),x=0,y=0,w=o.offsetWidth,h=o.offsetHeight if(o.ge ...