1、扫描依赖包
当我们不知道java项目是否包含native依赖的时候,可以使用DevKit代码迁移工具扫描整个war或者jar包。
鲲鹏DevKit代码迁移工具获取链接:https://www.hikunpeng.com/developer/devkit/porting-advisor
通过鲲鹏DevKit代码迁移工具,扫描sigar-lib-1.6.4.jar结果如下:

2、分析扫描结果
sigar-lib-1.6.4.jar包调用了native的动态库libsigar-x86-linux.so,且该动态库未在已有的白名单里,故不能通过工具直接下载,需要手动编译。
3、编译libsigar-aarch64-linux.so
1)安装依赖
2)下载源码并解压
3)编译


执行ant编译:


4、编译sigar-lib-1.6.4.jar

5、FAQ
1)[cc] gcc: 错误:unrecognized command line option ‘-m64’
问题截图:

问题描述:鲲鹏平台不支持-m64编译选项
解决思路:将鲲鹏平台对应的编译选项设置为-mabi=lp64

2)/root/dev/sigar-sigar-1.6.4/src/os/linux/linux_sigar.c:1148:22: 错误:called object ‘major’ is not a function or function pointer
问题截图:

问题描述:进入sigar-sigar-1.6.4/src/os/linux/linux_sigar.c,查看1148和1149行代码,major和minor函数未找到,可能缺少头文件。
解决思路:
在系统头文件路径下搜索关键字major和minor,查看头文件名。

将文件sigar-sigar-1.6.4/src/os/linux/linux_sigar.c中,引入头文件sys/sysmacros.h

1、扫描依赖包
当我们不知道java项目是否包含native依赖的时候,可以使用DevKit代码迁移工具扫描整个war或者jar包。
鲲鹏DevKit代码迁移工具获取链接:https://www.hikunpeng.com/developer/devkit/porting-advisor
通过鲲鹏DevKit代码迁移工具,扫描sigar-lib-1.6.4.jar结果如下:
2、分析扫描结果
sigar-lib-1.6.4.jar包调用了native的动态库libsigar-x86-linux.so,且该动态库未在已有的白名单里,故不能通过工具直接下载,需要手动编译。
3、编译libsigar-aarch64-linux.so
1)安装依赖
2)下载源码并解压
3)编译
执行ant编译:
4、编译sigar-lib-1.6.4.jar
5、FAQ
1)[cc] gcc: 错误:unrecognized command line option ‘-m64’
问题截图:
问题描述:鲲鹏平台不支持-m64编译选项
解决思路:将鲲鹏平台对应的编译选项设置为-mabi=lp64
2)/root/dev/sigar-sigar-1.6.4/src/os/linux/linux_sigar.c:1148:22: 错误:called object ‘major’ is not a function or function pointer
问题截图:
问题描述:进入sigar-sigar-1.6.4/src/os/linux/linux_sigar.c,查看1148和1149行代码,major和minor函数未找到,可能缺少头文件。
解决思路:
在系统头文件路径下搜索关键字major和minor,查看头文件名。
grep -r "major(" /usr/include/ grep -r "minor(" /usr/include/将文件sigar-sigar-1.6.4/src/os/linux/linux_sigar.c中,引入头文件sys/sysmacros.h