前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测评 OrangePi KunPeng Pro走进高校

测评 OrangePi KunPeng Pro走进高校

作者头像
杨校
发布2024-05-30 12:50:21
1540
发布2024-05-30 12:50:21
举报
文章被收录于专栏:Java技术分享圈Java技术分享圈

引言

Orange Kunpeng Pro是香橙派Kunpeng Pro,一款专为高校教育和研究量身定制的高性能开发板。它以华为鲲鹏处理器为核心,为高校师生提供了一个功能强大、扩展性强的实验和研究平台。这款开发板的引入,旨在促进计算机科学与技术、嵌入式系统、物联网、人工智能等领域的教学和研究工作,为学生和教师提供实践和创新的机会。 OrangePI Kunpeng Pro在高校领域展示了自己的教育价值和学术潜力,为高校师生提供了一个促进教学和研究发展的强大工具:

  1. 教学支持:作为教学辅助工具,OrangePI Kunpeng Pro能够支持计算机系统能力课程设计,帮助学生更好地理解硬件与软件的协同工作原理。
  2. 实践平台:提供真实的开发环境,让学生能够在项目中实践理论知识,从服务器课程创新到云计算、边缘计算、嵌入式课程创新,覆盖多个技术层面。
  3. 研究与创新:为教师和研究生提供强大的计算能力和丰富的接口,支持复杂的研究项目和前沿技术探索,特别是在物联网和AI领域。
  4. 开源生态:鼓励学生参与到开源项目中来,通过OrangePI Kunpeng Pro提供的开源工具和资源,培养他们的创新精神和团队协作能力。
  5. 经济高效:OrangePI Kunpeng Pro的高性价比使其成为高校在有限预算下的理想选择,为学生提供了一种负担得起的、高性能的学习和研究工具。

测评目的和背景

2.1 目的说明:

明确测评的目标,如评估OrangePi Kunpeng Pro在学术研究、教学实验、项目开发等方面的适用性和性能表现。

2.1.1 学术研究
  1. 计算密集型任务
    • 数据挖掘与分析:处理大规模数据集,进行复杂的数据分析任务。
    • 机器学习与深度学习:作为算法原型验证和模型训练的平台,支持AI研究的快速迭代。
  2. 高性能计算
    • 并行计算:利用多核处理器进行并行算法的开发和测试。
    • 分布式计算:在多个OrangePi Kunpeng Pro之间搭建集群,进行分布式系统的实验和研究。
  3. 边缘计算
    • 实时数据处理:在边缘节点进行数据的实时采集、处理和分析。
    • 物联网应用:作为物联网项目的核心处理单元,支持复杂的传感器数据处理。
  4. 网络安全与加密
    • 加密算法研究:利用硬件加速进行加密算法的实现和性能测试。
    • 网络安全实验:模拟网络攻击和防御,进行网络安全相关的研究。
  5. 图形处理与视觉计算
    • 图像和视频处理:进行图像识别、视频分析和增强等视觉计算任务。
    • 计算机视觉:为计算机视觉项目提供足够的计算能力和硬件加速。
2.1.2 教学实验
  1. 计算机科学与技术教育
    • 系统编程:教授操作系统、网络编程、多线程编程等课程。
    • 硬件接口教学:通过GPIO、UART、I2C、SPI等接口进行硬件编程教学。
  2. 人工智能与机器学习课程
    • AI算法实践:让学生通过实际操作来理解机器学习和深度学习算法。
    • 智能硬件项目:设计和实现智能机器人、自动驾驶小车等教学项目。
  3. 嵌入式系统教学
    • 嵌入式系统设计:教授基于ARM架构的嵌入式系统设计。
    • 实时系统开发:基于OrangePi Kunpeng Pro进行实时操作系统和应用程序的开发。
  4. 网络与通信课程
    • 网络协议实验:模拟和实现各种网络协议。
    • 无线通信教学:利用Wi-Fi和蓝牙模块进行无线通信实验。
  5. 综合项目实践
    • 课程设计:作为课程设计的平台,让学生综合应用所学知识。
    • 毕业设计:为学生提供强大的计算平台,进行高水平的毕业设计。 :::warning OrangePi Kunpeng Pro不仅在于其高性能的硬件配置,还在于其开放性和可扩展性。它支持多种操作系统和开发工具,能够满足不同学术研究和教学实验的需求。当然,其相对较低的成本和易于使用的特性也使其成为高校师生理想的实验和教学平台。 :::

2.2 背景介绍:

2.2.1 硬件配置:
  1. 处理器:搭载华为鲲鹏920处理器,具有4核64位处理器+AI处理器。
  2. 内存:支持DDR4内存,配备8GB或16GB可选,速率达到3200Mbps。
  3. 存储:支持多种存储解决方案,包括SATA接口和M.2接口2280,可用于安装SSD硬盘还具备eMMC插槽、TF卡槽。
  4. 扩展接口:提供PCIe x4插槽,可用于扩展显卡、网络卡等。
  5. 网络:通常配备千兆以太网接口,支持高速网络连接。
  6. 无线通信:包括Wi-Fi和蓝牙模块4.2,支持双频2.4G和5G无线网络连接。
  7. **有线通信:**1000Mbps以太网高速运转
  8. 显示输出:提供2个HDMI接口,支持高清视频输出。
  9. USB接口:提供多个USB接口,包括USB 3.0和USB 2.0。
  10. 其他接口:可能包括音频接口、GPIO针脚等。
2.2.2 特点:
  1. 国产处理器:采用华为自主研发的鲲鹏处理器,支持国内处理器生态系统的发展。
  2. 高性能计算:鲲鹏处理器具有高性能、低功耗的特点,适合进行高性能计算任务。
  3. 开放生态:支持多种操作系统,如Ubuntu、openEuler等,便于开发者进行系统开发和定制。
  4. 丰富的接口:提供多样的扩展接口,支持多种外设连接,灵活性高。
  5. 适用于教育与研究:由于其高度的可扩展性和开放的特性,非常适合高校和研究机构用于教学和科研。
  6. 适用于企业应用:可以作为服务器使用,适用于企业中的轻量级计算需求。
  7. 安全性:华为鲲鹏处理器在硬件层面提供了安全特性,有助于保障系统安全。
  8. 节能环保:低功耗设计有助于节约能源,减少碳排放。

开箱连接

连接电源线

1888127906.jpeg
1888127906.jpeg
1888127874.jpeg
1888127874.jpeg

查看路由器管理端

家用路由器

我这采用的路由器是HUAWEI-凌霄-EE-12W2的路由。

359983105.jpg
359983105.jpg

查看openEuler的ip地址

image.png
image.png

启动ssh

基于Xshell进行连接

连接系统三要素

  • ip地址 : 192.168.3.161
  • 用户名:openEuler/root
    • root 为超级管理员
    • openEuler为管理员
  • 密 码:openEuler
image.png
image.png

点击【连接】后,输入用户名:密码即可

配置wifi登录

省去每次都需要采用网线连接

  1. 扫描当前附近的wifi热点:
代码语言:javascript
复制
[root@openEuler ~]# nmcli dev wifi
  1. 连接wifi:
    1. wifiName
    2. wifiPassword
代码语言:javascript
复制
[root@openEuler ~]# sudo nmcli dev wifi connect wifiName password wifiPassword

连接:

代码语言:javascript
复制
[root@openEuler ~]# sudo nmcli dev wifi connect HUAWEI-凌霄-EE12W2 password mryang66188

查看WiFi连接的IP

359983105.jpg
359983105.jpg
-1089872857.jpg
-1089872857.jpg
-652163421.jpg
-652163421.jpg

测评范围

针对OrangePi KunPeng Pro的与x86架构做横向对比

实验1: OrangePi KunPeng Pro 与x86在双精度浮点型转整型的差异

OrangePi KunPeng Pro

检查开发板中的编译器是否安装,openEuler 自带版本为 gcc10.3.1,符合本次实验要求。

分别输入命令 gcc – vg++ -v

代码语言:javascript
复制
[root@openEuler ~]$ gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/aarch64-linux-gnu/10.3.1/lto-wrapper
目标:aarch64-linux-gnu
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,fortran,objc,obj-c++,lto --enable-plugin --enable-initfini-array --disable-libgcj --without-cloog --enable-gnu-indirect-function --build=aarch64-linux-gnu --with-stage1-ldflags=' -Wl,-z,relro,-z,now' --with-boot-ldflags=' -Wl,-z,relro,-z,now' --disable-bootstrap --without-isl --with-multilib-list=lp64 --enable-bolt
线程模型:posix
Supported LTO compression algorithms: zlib
gcc 版本 10.3.1 (GCC)
代码语言:javascript
复制
[opengauss@openEuler ~]$ g++ -v
使用内建 specs。
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/aarch64-linux-gnu/10.3.1/lto-wrapper
目标:aarch64-linux-gnu
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,fortran,objc,obj-c++,lto --enable-plugin --enable-initfini-array --disable-libgcj --without-cloog --enable-gnu-indirect-function --build=aarch64-linux-gnu --with-stage1-ldflags=' -Wl,-z,relro,-z,now' --with-boot-ldflags=' -Wl,-z,relro,-z,now' --disable-bootstrap --without-isl --with-multilib-list=lp64 --enable-bolt
线程模型:posix
Supported LTO compression algorithms: zlib
gcc 版本 10.3.1 (GCC) 

进行编码:

代码语言:javascript
复制
[openEuler@openEuler test]$ vim test.c
[openEuler@openEuler ~]$ mkdir test
[openEuler@openEuler ~]$ cd test/
image.png
image.png
代码语言:javascript
复制
# 执行编译
[openEuler@openEuler test]$ gcc -mabi=lp64 -march=armv8-a test.c
[openEuler@openEuler test]$ ll
总用量 20
-rwxrwxr-x 1 openEuler openEuler 70904  5月 28 21:17 a.out
-rw-rw-r-- 1 openEuler openEuler   507  5月 28 21:17 test.c

上述过程中,发现鲲鹏上生成可执行文件:a.out, 故说明编译成功

  • 执行命令 ./a.out,观察输出结果,如下所示
image.png
image.png
2.3.2 x86架构

为对比开发板的鲲鹏,特在阿里云购入x86的openEuler服务器,进行对比:

代码语言:javascript
复制
root@iZbp16djnvbt0u13pkrbckZ ~]# gcc -v
-bash: gcc: command not found
[root@iZbp16djnvbt0u13pkrbckZ ~]# yum install gcc  -y
...
Complete!
[root@iZbp16djnvbt0u13pkrbckZ ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/10.3.1/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,fortran,objc,obj-c++,lto --enable-plugin --enable-initfini-array --disable-libgcj --without-cloog --enable-gnu-indirect-function --build=x86_64-linux-gnu --with-stage1-ldflags=' -Wl,-z,relro,-z,now' --with-boot-ldflags=' -Wl,-z,relro,-z,now' --disable-bootstrap --without-isl --with-tune=generic --with-arch_32=x86-64 --disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.3.1 (GCC) 
代码语言:javascript
复制
[root@iZbp16djnvbt0u13pkrbckZ ~]#  g++ -v
-bash: g++: command not found
[root@iZbp16djnvbt0u13pkrbckZ ~]# yum install g++  -y
...
Complete!
[root@iZbp16djnvbt0u13pkrbckZ ~]# g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/10.3.1/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,fortran,objc,obj-c++,lto --enable-plugin --enable-initfini-array --disable-libgcj --without-cloog --enable-gnu-indirect-function --build=x86_64-linux-gnu --with-stage1-ldflags=' -Wl,-z,relro,-z,now' --with-boot-ldflags=' -Wl,-z,relro,-z,now' --disable-bootstrap --without-isl --with-tune=generic --with-arch_32=x86-64 --disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.3.1 (GCC) 
[root@iZbp16djnvbt0u13pkrbckZ ~]# 
代码语言:javascript
复制
[root@iZbp16djnvbt0u13pkrbckZ home]# mkdir test
[root@iZbp16djnvbt0u13pkrbckZ home]# cd test
[root@iZbp16djnvbt0u13pkrbckZ test]# vim test.c
image.png
image.png
代码语言:javascript
复制
[root@iZbp16djnvbt0u13pkrbckZ test]# gcc -ma64 test.c
gcc: error: unrecognized command-line option ‘-ma64’; did you mean ‘-m64’?
[root@iZbp16djnvbt0u13pkrbckZ test]# gcc -m64 test.c
[root@iZbp16djnvbt0u13pkrbckZ test]# ls
a.out  test.c
[root@iZbp16djnvbt0u13pkrbckZ test]# ./a.out 
test_long low = 0xffffffff
test_long high = 0x7ffffff
test_long long = 576460752303423487

0.000000
9223372036854775807
-9223372036854775808
sizeof long = 8

结果对比:

CPU

X86

OrangePi KunPeng Pro

结果

结论:

image.png
image.png
  1. 两个大平台下,是两套 cpu 架构,其中算数逻辑单元的实现可能会有差异。
  2. 操作系统都是OpenEuler。
  • x86 指令集中浮点到整型的转换指令,定义了一 indefinite integer value—"不确定 数值 64bit:0x8000000000000000,大多数都遵循这个原则,但是在从 double 向无符号整型转换 时,又出现不同的结果,
  • OrangePi KunPeng Pro处理器处理非常清晰和简单,上溢和下溢时。保留整型能表示 的最大最小值。这样开发者不会面对不确定或无法预期的结果。 | | | |

实验2: 关于动态 so 库的调用

测试在OrangePi KunPeng Pro平台下调用动态 so 库的试验 。在传统的x86架构下,是可以正常运作的,毕竟大多数电脑都是Intel,大家在日常开发中都已经使用N次,这里就不再进行测试,直接针对KunPeng架构测试是否能够正常运行

代码语言:javascript
复制
Calculate 为 Java 类,具体内容如下,进行四则运算然后打印结果, 但是现在加法和减法运算不是用 Java 代码完成,而是依赖了 C 动态库 libtest.so。另外此项目 是通过 maven 构建,后续 jar 包构建也将直接使用 mvn 命令 。
  • 安装Maven:
代码语言:javascript
复制
[openEuler@openEuler root]$ sudo dnf install maven  -y
Last metadata expiration check: 3:44:57 ago on 2024年05月28日 星期二 18时57分49秒.
Dependencies resolved.
=====================================================================================================================================
 Package                                          Architecture     Version                                 Repository           Size
=====================================================================================================================================
Installing:
 maven                                            noarch           1:3.6.3-2.oe2203sp3                     everything           10 k
Installing dependencies:
 aopalliance                                      noarch           1.0-19.oe2203sp3                        everything           14 k
 apache-commons-cli                               noarch           1.4-7.oe2203sp3                         everything           65 k
 apache-commons-codec                             noarch           1.11-6.oe2203sp3                        everything          276 k
 apache-commons-io                                noarch           1:2.6-8.oe2203sp3                       everything          207 k
 apache-commons-lang3                             noarch           3.9-3.oe2203sp3                         everything          469 k
 apache-commons-logging                           noarch           1.2-17.oe2203sp3                        everything           80 k
 atinject                                         noarch           1-31.oe2203sp3                          everything           15 k
 cdi-api                                          noarch           1.2-10.oe2203sp3                        everything          139 k
 cglib                                            noarch           3.3.0-1.oe2203sp3                       everything          299 k
 easymock                                         noarch           3.6-1.oe2203sp3                         everything          144 k
 geronimo-annotation                              noarch           1.0-26.oe2203sp3                        everything           21 k
 google-guice                                     noarch           4.1-13.oe2203sp3                        everything          459 k
 guava20                                          noarch           20.0-11.oe2203sp3                       everything          2.7 M
 hamcrest                                         noarch           1.3-25.oe2203sp3                        everything          122 k
 hawtjni-runtime                                  noarch           1.16-4.oe2203sp3                        everything           35 k
 httpcomponents-client                            noarch           4.5.5-7.oe2203sp3                       everything          707 k
 httpcomponents-core                              noarch           4.4.15-1.oe2203sp3                      everything          1.4 M
 jakarta-el-api                                   noarch           4.0.0-4.oe2203sp3                       everything          151 k
 jansi                                            noarch           1.17.1-2.oe2203sp3                      everything           74 k
 jansi-native                                     aarch64          1.7-8.oe2203sp3                         everything           69 k
 java-1.8.0-openjdk                               aarch64          1:1.8.0.402.b06-0.oe2203sp3             update              407 k
 java-1.8.0-openjdk-devel                         aarch64          1:1.8.0.402.b06-0.oe2203sp3             update              9.8 M
 java-1.8.0-openjdk-headless                      aarch64          1:1.8.0.402.b06-0.oe2203sp3             update               38 M
 javapackages-tools                               noarch           5.3.0-6.oe2203sp3                       everything           32 k
 jboss-interceptors-1.2-api                       noarch           1.0.1-1.oe2203sp3                       everything           52 k
 jcl-over-slf4j                                   noarch           1.7.25-8.oe2203sp3                      everything           22 k
 jsoup                                            noarch           1.14.2-2.oe2203sp3                      update              600 k
 jsr-305                                          noarch           3.0.2-1.oe2203sp3                       everything           30 k
 junit                                            noarch           1:4.12-13.oe2203sp3                     everything          292 k
 maven-lib                                        noarch           1:3.6.3-2.oe2203sp3                     everything          1.5 M
 maven-resolver-api                               noarch           1:1.1.1-4.oe2203sp3                     everything          131 k
 maven-resolver-connector-basic                   noarch           1:1.1.1-4.oe2203sp3                     everything           48 k
 maven-resolver-impl                              noarch           1:1.1.1-4.oe2203sp3                     everything          174 k
 maven-resolver-spi                               noarch           1:1.1.1-4.oe2203sp3                     everything           38 k
 maven-resolver-transport-wagon                   noarch           1:1.1.1-4.oe2203sp3                     everything           37 k
 maven-resolver-util                              noarch           1:1.1.1-4.oe2203sp3                     everything          145 k
 maven-shared-utils                               noarch           3.3.3-1.oe2203sp3                       everything          150 k
 maven-wagon-file                                 noarch           3.1.0-3.oe2203sp3                       everything           19 k
 maven-wagon-http                                 noarch           3.1.0-3.oe2203sp3                       everything           19 k
 maven-wagon-http-shared                          noarch           3.1.0-3.oe2203sp3                       everything           41 k
 maven-wagon-provider-api                         noarch           3.1.0-3.oe2203sp3                       everything           55 k
 objectweb-asm                                    noarch           8.0.1-1.oe2203sp3                       everything          382 k
 objenesis                                        noarch           2.6-4.oe2203sp3                         everything          213 k
 plexus-cipher                                    noarch           1.7-16.oe2203sp3                        everything           45 k
 plexus-classworlds                               noarch           2.5.2-10.oe2203sp3                      everything           59 k
 plexus-containers-component-annotations          noarch           1.7.1-7.oe2203sp3                       everything           12 k
 plexus-interpolation                             noarch           1.26-2.oe2203sp3                        everything           79 k
 plexus-sec-dispatcher                            noarch           1.4-26.oe2203sp3                        everything           60 k
 plexus-utils                                     noarch           3.3.0-1.oe2203sp3                       everything          254 k
 qdox                                             noarch           2.0-6.M9.oe2203sp3                      everything          290 k
 sisu-inject                                      noarch           1:0.3.3-5.oe2203sp3                     everything          865 k
 slf4j                                            noarch           1.7.25-8.oe2203sp3                      everything           68 k

Transaction Summary
=====================================================================================================================================
Install  53 Packages
代码语言:javascript
复制
[WARNING] Replacing pre-existing project main-artifact file: /home/java_test/Calc/target/calculator-1.0-SNAPSHOT.jar
with assembly file: /home/java_test/Calc/target/calculator-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  11:49 min
[INFO] Finished at: 2024-05-28T23:02:20+08:00
[INFO] ------------------------------------------------------------------------
[root@openEuler Calc]# mvn clean package
image.png
image.png
代码语言:javascript
复制
[root@openEuler Calc]# ls
pom.xml  src  target

使用了 c/c++ 的动态库,需要设置环境变量具体步骤如下:

代码语言:javascript
复制
[root@openEuler Calc]# cd target/classes
[root@openEuler classes]# ls
com  libtest.so  test.c  test.h
[root@openEuler classes]# cp libtest.so  /usr/local/lib
[root@openEuler classes]# export LD_LIBRARY_PATH=/usr/local/lib

接下来回退一层,进入到target目录下进行运行程序

代码语言:javascript
复制
[root@openEuler classes]# pwd
/home/java_test/Calc/target/classes
[root@openEuler classes]# cd ..
[root@openEuler target]# ls
archive-tmp  calculator-1.0-SNAPSHOT.jar  classes  maven-archiver  maven-status
[root@openEuler target]# java -jar calculator-1.0-SNAPSHOT.jar
27.0
3.0
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'test':
libtest.so: cannot open shared object file: No such file or directory
libtest.so: cannot open shared object file: No such file or directory
Can't obtain InputStream for linux-aarch64/libtest.so
	at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:302)
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:455)
	at com.sun.jna.Library$Handler.<init>(Library.java:192)
	at com.sun.jna.Native.loadLibrary(Native.java:646)
	at com.sun.jna.Native.loadLibrary(Native.java:630)
	at com.mryang.Calculate$CLibrary.<clinit>(Calculate.java:17)
	at com.mryang.Calculate.add(Calculate.java:23)
	at com.mryang.Calculate.main(Calculate.java:11)
	Suppressed: java.lang.UnsatisfiedLinkError: libtest.so: cannot open shared object file: No such file or directory
		at com.sun.jna.Native.open(Native Method)
		at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:191)
		... 7 more
	Suppressed: java.lang.UnsatisfiedLinkError: libtest.so: cannot open shared object file: No such file or directory
		at com.sun.jna.Native.open(Native Method)
		at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:204)
		... 7 more
	Suppressed: java.io.IOException: Can't obtain InputStream for linux-aarch64/libtest.so
		at com.sun.jna.Native.extractFromResourcePath(Native.java:1115)
		at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:276)
		... 7 more
[root@openEuler target]# 

发现报错,所以就得需要重新再编译动态 so 库 :::warning 经过上述发现最初的 jar 包只能在安装了 64 位 jdk 的 X86 平台系统上运行,在openEuler系统上不能执行,有违Java最初初衷,”一次编译,到处运行“。 虽然 Java 可以跨平台运行,但是 C++动态库不能跨平台调用,本项目中的加减法实际上是调 用 C动态库完成的,而此 C动态库是在 x86 编译出的 libtest.so 文件,需要在OrangePi KunPeng Pro上使用其源码重新编译成 libtest.so 动态库,Java 才能正常调用它 ::: 修复报错:

代码语言:javascript
复制
[root@openEuler target]# cd classes
[root@openEuler classes]# ls
com  libtest.so  test.c  test.h
[root@openEuler classes]# gcc test.c -fPIC -shared -o libtest.so
[root@openEuler classes]# # 到此。已经程序编译新的so库,覆盖原有的libtest.so
[root@openEuler classes]# cp libtest.so /usr/local/lib/
cp:是否覆盖'/usr/local/lib/libtest.so'? y
[root@openEuler classes]# export LD_LIBRARY_PATH=/usr/local/lib


[root@openEuler classes]# pwd
/home/java_test/Calc/target/classes
[root@openEuler classes]# cd ../../
[root@openEuler Calc]# rm -rf target/
[root@openEuler Calc]# mvn clean package
...
[WARNING] Replacing pre-existing project main-artifact file: /home/java_test/Calc/target/calculator-1.0-SNAPSHOT.jar
with assembly file: /home/java_test/Calc/target/calculator-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.991 s
[INFO] Finished at: 2024-05-28T23:39:32+08:00
[INFO] ------------------------------------------------------------------------
[root@openEuler Calc]# ls
pom.xml  src  target
[root@openEuler Calc]# cd target/
[root@openEuler target]# ls
archive-tmp  calculator-1.0-SNAPSHOT.jar  classes  maven-archiver  maven-status
[root@openEuler target]# java -jar calculator-1.0-SNAPSHOT.jar
27.0
3.0
12
6
[root@openEuler target]# 

关于跨平台,个人是如下理解: 跨平台是指不依赖操作系统,不依赖硬件环境,具有跨平台性的程序能够在不同的平台上运行。

意见反馈:

说起香橙派,或许有些开发没有听过,害怕小众、不敢轻易接触,甚至不乏有些笔友会讨伐OrangePI的文档不够详尽或教程不够完善,但是当OrangePI与华为牵手那一刻,难道这不也算是华为企业已经帮众多开发者进行审视选择后的结果吗,我是一个资深华为粉,更加相信OrangePI在拥有华为诸多支持后必然会越来越好,加油!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 测评目的和背景
    • 2.1 目的说明:
      • 2.1.1 学术研究
      • 2.1.2 教学实验
    • 2.2 背景介绍:
      • 2.2.1 硬件配置:
      • 2.2.2 特点:
  • 开箱连接
    • 连接电源线
      • 查看路由器管理端
        • 家用路由器
      • 启动ssh
        • 基于Xshell进行连接
        • 配置wifi登录
    • 测评范围
      • 实验1: OrangePi KunPeng Pro 与x86在双精度浮点型转整型的差异
        • OrangePi KunPeng Pro
      • 实验2: 关于动态 so 库的调用
      • 意见反馈:
      相关产品与服务
      边缘可用区
      腾讯云边缘可用区(TencentCloud Edge Zone,TEZ)是腾讯云的本地扩展,适用于解决计算、存储和服务可用性问题。腾讯云边缘可用区可为您带来云的诸多优势,例如弹性、可扩展性和安全性。借助腾讯云边缘可用区,您可以在靠近最终用户的地理位置运行对延迟敏感的应用程序,基本消除延迟问题。腾讯云边缘可用区提供与中心节点一致的体验,助力业务下沉,具备更低延时、更广覆盖、更少成本等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档