【问题标题】:How to build Tomcat-native for Solaris Sparc 64 bit using 64-bit Java JDK如何使用 64 位 Java JDK 为 Solaris Sparc 64 位构建 Tomcat-native
【发布时间】:2015-12-13 15:56:52
【问题描述】:

我使用的是 Solaris Sparc 64 位机器。我想使用 64 位版本的 Java 构建本地 Tomcat。我根据JDK 7 Installation on the Oracle Solaris Operating System在我的Solaris盒子里安装了Java。

当我检查 Java 的版本时:

/usr/jdk/jdk1.7.0_80/bin/java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) Server VM (build 24.80-b11, mixed mode)

我也导出JAVA_HOME

export JAVA_HOME=/usr/jdk/jdk1.7.0_80

我配置:

./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-java-home=$JAVA_HOME \
--with-ssl=/usr/local/ssl --prefix=$CATALINA_HOME

我可以使用这个 32 位的 java 进行构建,但是 64 位的 java 存在:

/usr/jdk/jdk1.7.0_80/bin/sparcv9/java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

如何告诉我的 Tomcat 原生配置使用 64 位 java 而不是 32 位 java?


这里的问题是我可以用 32 位 java 构建并且 tomcat 可以工作。但在生产中没有 32 位 JRE,只有 64 位 JRE。如果我使用相同的 32 位 Tomcat 原生库,则会导致:

wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)]

更新 #1

INFO: Loaded APR based Apache Tomcat Native library 1.1.33 using APR version 1.5.2.
Dec 12, 2015 8:02:42 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Dec 12, 2015 8:02:42 PM org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized (OpenSSL 1.0.1p 9 Jul 2015)
Dec 12, 2015 8:02:43 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-apr-0.0.0.0-8081"]
Dec 12, 2015 8:02:43 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-apr-0:0:0:0:0:0:0:0-8081"]
Dec 12, 2015 8:02:43 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-apr-0.0.0.0-8444"]
ld.so.1: java: fatal: relocation error: file /tomcat7/lib/libtcnative-1.so.0.1.33: symbol EC_KEY_new_by_curve_name: referenced symbol not found

四月,

 CFLAGS="-m64" ./configure

TC 原生,

 CFLAGS="-m64" ./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-java-home=/usr/jdk/instances/jdk1.7.0/ --with-ssl=/usr/local/ssl --prefix=/tomcat7

工作!! ----------------------------------------------- ------------------------

构建 openssl,

export KERNEL_BITS=64
./config shared
make 
make install

构建 APR

CC="cc" CFLAGS="-m64" LDFLAGS="-m64" ./configure
make
make install

构建 tc-native

CC="cc" CFLAGS="-m64 -fPIC" LDFLAGS="-m64" ./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-java-home=/usr/jdk/jdk1.7.0_80/ --with-ssl=/usr/local/ssl --prefix=/tomcat
make 
make install

【问题讨论】:

标签: java tomcat tomcat7 solaris


【解决方案1】:

似乎没有指定 64 位 sparc 目标的选项。

也许构建系统会根据编译器标志自行计算出来。

我会尝试:

CFLAGS="-m 64" ./configure ...

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 2012-02-11
  • 2013-01-28
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多