首页 > 其他分享 >测评 OrangePi KunPeng Pro走进高校

测评 OrangePi KunPeng Pro走进高校

时间:2024-05-29 18:32:51浏览次数:24  
标签:KunPeng oe2203sp3 -- Pro noarch everything openEuler root OrangePi

写在开头

非常感谢CSDN给予我本次参与OrangePi KunPeng Pro开发板的机会,让我感到非常幸运,因我一直深处高校授课,教研团队也多次给我提及要深入了解学习KunPeng套件,下学期即将开设openEuler、openGauss、及鲲鹏平台下程序设计课程,这次开发板刚好包含以上内容,让我感觉热血沸腾,感谢之情,难以溢于言表。

引言

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
1888127874.jpeg

查看路由器管理端

家用路由器

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

359983105.jpg
查看openEuler的ip地址
image.png

启动ssh

基于Xshell进行连接

连接系统三要素

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

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

配置wifi登录

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

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

连接:

[root@openEuler ~]# sudo nmcli dev wifi connect HUAWEI-凌霄-EE12W2 password mryang66188

查看WiFi连接的IP
359983105.jpg
-1089872857.jpg
-652163421.jpg

测评范围

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

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

OrangePi KunPeng Pro

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

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

[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)
[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) 

进行编码:

[openEuler@openEuler test]$ vim test.c
[openEuler@openEuler ~]$ mkdir test
[openEuler@openEuler ~]$ cd test/

image.png

# 执行编译
[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

2.3.2 x86架构

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

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) 
[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 ~]# 
[root@iZbp16djnvbt0u13pkrbckZ home]# mkdir test
[root@iZbp16djnvbt0u13pkrbckZ home]# cd test
[root@iZbp16djnvbt0u13pkrbckZ test]# vim test.c

image.png

[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

结果对比:

CPUX86OrangePi KunPeng Pro
结果image.pngimage.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架构测试是否能够正常运行

Calculate 为 Java 类,具体内容如下,进行四则运算然后打印结果, 但是现在加法和减法运算不是用 Java 代码完成,而是依赖了 C 动态库 libtest.so。另外此项目 是通过 maven 构建,后续 jar 包构建也将直接使用 mvn 命令 。
  • 安装Maven:
[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

[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

[root@openEuler Calc]# ls
pom.xml  src  target

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

[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目录下进行运行程序

[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 才能正常调用它
:::
修复报错:

[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在拥有华为诸多支持后必然会越来越好,加油!

标签:KunPeng,oe2203sp3,--,Pro,noarch,everything,openEuler,root,OrangePi
From: https://blog.csdn.net/kese7952/article/details/139302808

相关文章

  • 227 Logging Providers
    可以查看日志的地方ConsoleVS中Output-DebugWindows下的EventViewer设置Windows下的EventViewer"EventLog":{ "LogLevel":{  "Default":"Debug" }自定义LoggingProvider//Logging//builder.Host.ConfigureLogging(loggingProvider......
  • HarmonyOS实战开发:@ohos.promptAction (弹窗)
    创建并显示文本提示框、对话框和操作菜单。说明:本模块首批接口从APIversion9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。该模块不支持在UIAbility的文件声明处使用,即不能在UIAbility的生命周期中调用,需要在创建组件实例后使用。本模块功能依赖UI的......
  • antdv: Each record in table should have a unique `key` prop,or set `rowKey` to a
    在使用ant-designvue框架的时候,表格组件里面会碰到 Eachrecordintableshouldhaveaunique key prop,orset rowKey toanuniqueprimarykey这样的报错,具体见下图 原因分析:我看了一下官网,以及搜索了很多答案,最终原因是:在Table中,dataSource和columns里的数据......
  • 一起学习大模型 - langchain里的 PromptTemplate详细介绍
    文章目录前言一、安装LangChain二、基本用法1.导入库并定义模板2.填充模板三、进阶用法1.使用多个变量2.嵌套模板3.动态变量四、应用模板与大模型交互五、疑问解答1.举例说明2.更详细的例子总结前言上一篇文章我们讲了Prompt的概念和作用(大模型的交......
  • 全面掌握Prompt提示词技巧
    本文综合介绍了Prompt提示词的各种技巧,包括高级提示工程技术、设计提示的通用技巧、优化prompt的十个技巧、AI提示词网站合集、提示工程指南以及ChatGPT提示词技巧等,旨在帮助读者深入理解和应用这些技巧,提高与AI模型的交互效率和质量。文章目录高级提示工程技术零样本......
  • Qt 动画类(QPropertyAnimation)
    前言QPropertyAnimation是QT中的一个动画类,用于对目标对象的属性进行动画效果展示。该类继承自QAbstractAnimation类,使用起来非常方便和灵活。一、QPropertyAnimation类介绍QPropertyAnimation可以对任何QObject的子类的属性进行动画的展示,只要该属性是可写的,即存在set方......
  • 香橙派AIpro开发板初体验
    香橙派AIpro开发板初体验一、引言在当前的AI发展浪潮中,边缘计算逐渐成为了研究的热点。香橙派AIpro开发板作为一款基于昇腾AI技术的开发板,凭借其强大的算力和丰富的接口,为AI边缘计算提供了强大的支持。最近,我也是拿到了官方送来的香橙派AIpro开发板,收到后发现包装里不仅有......
  • B站尚硅谷Promise学习记录
    文章目录一、Promise是什么1.Promise初体验二、Promise的好处1.指定回调函数的方式更加灵活2.可以解决回调地狱问题,支持链式调用三、Promise实例对象的两个属性四、resolve函数以及reject函数五、Promise的then方法六、Promise下的几种方法1.Promise.resolve()2.Promis......
  • 云计算-交互式数据处理 (Interactive Data Processing)
    AWSGlueDataBrew(AWSGlueDataBrew)        数据预处理是任何数据分析任务之前的重要步骤。AWSGlueDataBrew是一个可视化工具,允许我们预处理数据,包括清洗和规范化数据。此AWS服务提供许多数据准备功能,包括分组、联接、过滤、重新采样、排序、处理缺失和重复实......
  • 一分钟部署prometheus&grafana全方面监控SpringBoot项目
    0x01创建目录找一个你喜欢的地方,创建项目根目录example:[root@demo-78~]#mkdir/data/prometheus0x02创建配置文件进入到项目根目录:[root@demo-78~]#cd/data/prometheus需要新建三个文件,分别是docker-compose.yml、prometheus.yml、node_down.yml,详细配置如下......