1

我正在尝试为 Linux 构建 32 位版本的 Sigar。当我构建时,我的 JAVA_HOME 指向一个 32 位版本的 java 并且构建似乎正在构建一个 32 位版本,但是当我检查构建库上的标头时,它说它是一个 64 位库。当我尝试使用该库时,我得到一个 UnsatisifiedLinkError(见下文)。

在这里,我试图针对构建的二进制文件运行:

$ java -jar sigar-bin/lib/sigar.jar version
/home/epederso/sigar-1.6/bindings/java/sigar-bin/lib/libsigar-x86-linux.so: /home/epederso/sigar-1.6/bindings/java/sigar-bin/lib/libsigar-x86-linux.so: 
wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
org.hyperic.sigar.SigarException: /home/epederso/sigar-1.6/bindings/java/sigar-bin/lib/libsigar-x86-linux.so: /home/epederso/sigar-1.6/bindings/java/sigar-bin/lib/libsigar-x86-linux.so: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
        at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172)

这是构建的库的 readelf 输出,显示它是 ELF64。

$ readelf -h sigar-bin/lib/libsigar-x86-linux.so
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0xa1b0
  Start of program headers:          64 (bytes into file)
  Start of section headers:          213536 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         5
  Size of section headers:           64 (bytes)
  Number of section headers:         28
  Section header string table index: 25

最后是构建的输出:

$ ant
Buildfile: /home/epederso/sigar-1.6/bindings/java/build.xml

jni-init:
    [mkdir] Created dir: /home/epederso/sigar-1.6/bindings/java/build/classes
     [echo] jni.src=linux, jni.jdk.os=linux, 32-bit
    [javac] /home/epederso/sigar-1.6/bindings/java/hyperic_jni/jni-build.xml:165: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 6 source files to /home/epederso/sigar-1.6/bindings/java/build/classes
    [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.4
    [javac] Note: /home/epederso/sigar-1.6/bindings/java/hyperic_jni/src/org/hyperic/jni/ArchLoader.java uses or overrides a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] 1 warning
  [libarch] x86-linux
     [echo] java.home=/usr/java/jdk1.7.0_02_32

sigar-version:
     [echo] SIGAR git revision exported

version-file:
     [echo] cp ./src/org/hyperic/sigar/SigarVersion.java.in -> /home/epederso/sigar-1.6/bindings/java/build/./src/org/hyperic/sigar/SigarVersion.java
     [copy] Copying 1 file to /home/epederso/sigar-1.6/bindings/java/build/src/org/hyperic/sigar

version-file:
     [echo] cp ../../src/sigar_version.c.in -> /home/epederso/sigar-1.6/bindings/java/build/src/sigar_version.c
     [copy] Copying 1 file to /home/epederso/sigar-1.6/bindings/java/build/src

version-file:
     [echo] cp ../../src/os/darwin/Info.plist.in -> /home/epederso/sigar-1.6/bindings/java/build/src/Info.plist
     [copy] Copying 1 file to /home/epederso/sigar-1.6/bindings/java/build/src

version-file:
     [echo] cp ../../src/os/win32/sigar.rc.in -> /home/epederso/sigar-1.6/bindings/java/build/src/sigar.rc
     [copy] Copying 1 file to /home/epederso/sigar-1.6/bindings/java/build/src

sigar.rc:

prepare-src:
     [exec] javasigar_generated.c needs update
     [exec] generating javasigar_generated.c
     [exec] generating javasigar_generated.h
     [exec] generating org/hyperic/sigar/Uptime.java
     [exec] skipping org/hyperic/sigar/NetStat.java
     [exec] generating org/hyperic/sigar/DirStat.java
     [exec] skipping org/hyperic/sigar/CpuPerc.java
     [exec] generating org/hyperic/sigar/ResourceLimit.java
     [exec] generating org/hyperic/sigar/NfsServerV3.java
     [exec] generating org/hyperic/sigar/FileAttrs.java
     [exec] generating org/hyperic/sigar/Cpu.java
     [exec] generating org/hyperic/sigar/NfsClientV2.java
     [exec] generating org/hyperic/sigar/DiskUsage.java
     [exec] generating org/hyperic/sigar/CpuInfo.java
     [exec] generating org/hyperic/sigar/FileSystem.java
     [exec] generating org/hyperic/sigar/Who.java
     [exec] generating org/hyperic/sigar/Swap.java
     [exec] generating org/hyperic/sigar/ProcTime.java
     [exec] generating org/hyperic/sigar/FileSystemUsage.java
     [exec] generating org/hyperic/sigar/ProcMem.java
     [exec] generating org/hyperic/sigar/ThreadCpu.java
     [exec] generating org/hyperic/sigar/NetRoute.java
     [exec] generating org/hyperic/sigar/ProcStat.java
     [exec] generating org/hyperic/sigar/NetInterfaceConfig.java
     [exec] generating org/hyperic/sigar/NetInfo.java
     [exec] generating org/hyperic/sigar/SysInfo.java
     [exec] generating org/hyperic/sigar/Mem.java
     [exec] generating org/hyperic/sigar/NfsClientV3.java
     [exec] generating org/hyperic/sigar/DirUsage.java
     [exec] generating org/hyperic/sigar/NetConnection.java
     [exec] generating org/hyperic/sigar/Tcp.java
     [exec] generating org/hyperic/sigar/NetInterfaceStat.java
     [exec] generating org/hyperic/sigar/ProcCred.java
     [exec] generating org/hyperic/sigar/ProcFd.java
     [exec] generating org/hyperic/sigar/ProcCredName.java
     [exec] generating org/hyperic/sigar/ProcCpu.java
     [exec] generating org/hyperic/sigar/NfsServerV2.java
     [exec] generating org/hyperic/sigar/ProcState.java
     [exec] generating org/hyperic/sigar/ProcExe.java

jni-compile:

jni-cc:
    [mkdir] Created dir: /home/epederso/sigar-1.6/bindings/java/build/obj/x86-linux/lib
     [echo] jni libname=sigar-x86-linux
       [cc] 13 total files to be compiled.
       [cc] Starting link

jni-lib-copy:
    [mkdir] Created dir: /home/epederso/sigar-1.6/bindings/java/sigar-bin/lib
     [copy] Copying 2 files to /home/epederso/sigar-1.6/bindings/java/sigar-bin/lib

copy-includes:
    [mkdir] Created dir: /home/epederso/sigar-1.6/bindings/java/sigar-bin/include
     [copy] Copying 5 files to /home/epederso/sigar-1.6/bindings/java/sigar-bin/include

build-jni:

compile:
    [javac] /home/epederso/sigar-1.6/bindings/java/build.xml:102: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 181 source files to /home/epederso/sigar-1.6/bindings/java/build/classes
    [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.4
    [javac] /home/epederso/sigar-1.6/bindings/java/src/org/hyperic/sigar/shell/ShellIntHandler.java:21: warning: Signal is internal proprietary API and may be removed in a future release
    [javac] import sun.misc.Signal;
    [javac]                ^
    [javac] /home/epederso/sigar-1.6/bindings/java/src/org/hyperic/sigar/shell/ShellIntHandler.java:22: warning: SignalHandler is internal proprietary API and may be removed in a future release
    [javac] import sun.misc.SignalHandler;
    [javac]                ^
    [javac] /home/epederso/sigar-1.6/bindings/java/src/org/hyperic/sigar/shell/ShellIntHandler.java:24: warning: SignalHandler is internal proprietary API and may be removed in a future release
    [javac] public class ShellIntHandler implements SignalHandler {
    [javac]                                         ^
    [javac] /home/epederso/sigar-1.6/bindings/java/src/org/hyperic/sigar/shell/ShellIntHandler.java:33: warning: Signal is internal proprietary API and may be removed in a future release
    [javac]         Signal signal;
   [javac]         ^
    [javac] /home/epederso/sigar-1.6/bindings/java/src/org/hyperic/sigar/shell/ShellIntHandler.java:35: warning: Signal is internal proprietary API and may be removed in a future release
    [javac]             signal = new Signal("INT");
    [javac]                          ^
    [javac] /home/epederso/sigar-1.6/bindings/java/src/org/hyperic/sigar/shell/ShellIntHandler.java:41: warning: Signal is internal proprietary API and may be removed in a future release
    [javac]             Signal.handle(signal, new ShellIntHandler());
    [javac]             ^
    [javac] /home/epederso/sigar-1.6/bindings/java/src/org/hyperic/sigar/shell/ShellIntHandler.java:47: warning: Signal is internal proprietary API and may be removed in a future release
    [javac]     public void handle(Signal signal) {
    [javac]                        ^
    [javac] Note: /home/epederso/sigar-1.6/bindings/java/src/org/hyperic/sigar/cmd/Ps.java uses or overrides a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] 8 warnings

pack:
      [jar] Building jar: /home/epederso/sigar-1.6/bindings/java/sigar-bin/lib/sigar.jar

build:

BUILD SUCCESSFUL
Total time: 10 seconds
4

0 回答 0