鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

编译Jruby生成jruby.jar

logstash老旧版本所依赖的jruby.jar不支持AArch64,如果不支持AArch64,在启动logstash时会报错"Unsupported platform: unknown-linux"。

  1. 下载代码并解压。
    1
    2
    wget https://github.com/jruby/jruby/archive/1.7.27.tar.gz -O jruby-1.7.27.tar.gz
    tar -zxvf jruby-1.7.27.tar.gz
    
  2. 进入解压后的目录。
    1
    cd jruby-1.7.27
    
  3. 修改源码“core/src/main/java/org/jruby/ext/ffi/Platform.java”
    1. 打开源码。
      1
      vi core/src/main/java/org/jruby/ext/ffi/Platform.java
      
    2. “i”进入编辑模式,修改以下内容。
      1. 第87行增加内容AARCH64

      2. 第149~150行增加AARCH64分支。

      3. 第209行增加AARCH64分支。

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  4. 修改pom.xml文件。
    1. 打开文件。
      1
      vi pom.xml
      
    2. “i”进入编辑模式,在第71行,修改jffi的版本,将1.2.12修改成1.2.13(jffi在1.2.13版本支持AArch64)。
      1
      <jffi.version>1.2.13</jffi.version>
      

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  5. 修改“core/pom.xml”文件。
    1. 打开文件。
      1
      vi core/pom.xml
      
    2. “i”进入编辑模式,在第101行,修改jnr-ffi的版本,将2.0.9修改成2.1.0。
      1
      2
      <artifactId>jnr-ffi</artifactId>
      <version>2.1.0</version>
      

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  6. 执行编译。
    1
    mvn package
    

    编译成功界面如下图所示:

    编译出的jruby.jar位于“lib”目录下。

  7. 使用鲲鹏应用迁移工具扫描jruby.jar。
    • jruby.jar支持多平台兼容,里面即包含了x86的so文件,也包含了AArch64的so文件,所以用鲲鹏应用迁移工具扫描之后,会显示含有x86的so文件,不影响使用。
    • 关于如何使用鲲鹏应用迁移工具进行扫描的详细信息,请参见《使用鲲鹏应用迁移工具案例》。