關于 sigar-lib-1.6.4.jar 遷移到 aarch64 下——記錄一次遷移過程

      網友投稿 1993 2025-04-01

      一、安裝 Porting Advisor Web 端

      1. 下載 Porting Advisor

      cd /home wget https://mirrors.huaweicloud.com/kunpeng/archive/Porting_Dependency/Packages/Porting-advisor_2.2.T4_Kunpeng-linux.tar.gz

      2. 解壓 Porting Advisor

      tar -zxvf Porting-advisor_2.2.T4_Kunpeng-linux.tar.gz

      3. 安裝 Porting Advisor Web 端

      cd Porting-advisor_2.2.T4_Kunpeng-linux/ ./install web

      注意:在安裝前需要關閉 SELinux

      setenforce 0

      4. 安裝 Porting Advisor Web 端出現的問題

      問題分析:配置的 yum 源中沒有 rpmdevtools 的工具包

      步驟一:找到華為開源鏡像站 ( https://mirrors.huaweicloud.com/home ) 中對應的 openEuler 的 arm 版本 yum 源的配置指導。

      步驟二:執行如下步驟。

      1、執行如下命令, 下載新的 openEulerOS.repo 到 /etc/yum.repos.d/ 目錄下。

      wget -O /etc/yum.repos.d/openEulerOS.repo https://repo.huaweicloud.com/repository/conf/openeuler_aarch64.repo

      2、清除原有 yum 緩存。

      yum clean all

      3、生成新的緩存。

      yum makecache

      第三步:重新編譯安裝

      ./install web

      步驟一:執行 yum install xxx 命令時,提示錯誤信息

      ImportError: /lib64/libcurl.so.4: symbol SSLv3_client_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference

      從提示信息可以看出 SSLv3_client_method 應該是 Openssl 1.1.0 版本動態庫中的一個函數。

      1、執行 ldd /lib64/libcurl.so.4 查看其對應的 Openssl 動態庫路徑:

      ldd/lib64/libcurl.so.4

      2、確認 ssl 動態庫路徑后,執行 nm 命令確認動態庫中是否定義了 SSLv3_client_method :

      nm /lib64/libssl.so.1.1 | grep SSLv3_client_method

      果然沒有,查找openssl源碼,該函數是存在的,只是用宏隔離了。

      vi openssl-1.1.1a/ssl/method.c

      # ifndef OPENSSL_NO_SSL3_METHOD ... const SSL_METHOD *SSLv3_client_method(void) { return sslv3_client_method(); } # endif

      步驟二:解決問題

      1、編譯 openssl 增加 enable-ssl3 與 enable-ssl3-method 選項:

      cd openssl-1.1.1a ./config shared enable-ssl3 enable-ssl3-method make make install

      2、生成的動態庫默認路徑為 /usr/local/lib,確認新的動態庫中已經有 SSLv3_client_method :

      nm /usr/local/lib/libssl.so.1.1 | grep SSLv3_client_method

      3、替換 /lib64 下的 openssl 動態庫:

      rm -rf /lib64/libssl #注意刪除動態庫前確認是否有鏈接該動態庫的應用程序正在運行,避免出現應用或系統異常。 cp /usr/local/lib/libssl* /lib64/

      步驟三:驗證

      重新執行 yum install xxx ,問題解決。

      二、掃描 sigar-lib-1.6.4.jar

      我們使用 Porting Advisor 遷移掃描工具掃描 sigar-lib-1.6.4.jar 包。

      三、編譯打包 sigar-lib-1.6.4.jar

      1. 安裝依賴工具

      yum install -y wget gcc gcc-c++ make cmake libtool autoconf automake ant unzip java-1.8.0-openjdk java-1.8.0-openjdk-devel maven

      (1) 下載解壓軟件包,本文檔將文件解壓到 /root/soft/ 目錄,請根據實際需要選擇解壓目錄。

      cd /root/soft/ wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/OpenJDK8U-jdk_aarch64_linux_hotspot_jdk8u242-b08.tar.gz tar -zxvf OpenJDK8U-jdk_aarch64_linux_hotspot_jdk8u242-b08.tar.gz

      (2) 配置環境變量。

      vi /etc/profile #文檔末尾添加如下內容 export JAVA_HOME=/root/soft/jdk8u242-b08 export PATH=$JAVA_HOME/bin:$PATH

      (3) 生效環境變量

      source /etc/profile

      (4) 檢查版本信息

      java -version

      (1) 下載 & 解壓軟件包

      #方式一: cd /root/soft/ wget https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz tar -zxvf apache-maven-3.6.3-bin.tar.gz #方式二:(建議) cd /root/soft/ wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/apache-maven-3.6.3-bin.tar.gz tar -zxvf apache-maven-3.6.3-bin.tar.gz

      (2) 替換 Maven 倉-在國內訪問 Maven 倉庫,連接速度太慢,可以替換為國內倉庫

      wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/settings.xml rm -rf /root/soft/apache-maven-3.6.3/conf/settings.xml cp settings.xml /root/soft/apache-maven-3.6.3/conf/

      (3) 配置環境變量。

      vi /etc/profile #文檔末尾添加如下內容 export MAVEN_HOME=/root/soft/apache-maven-3.6.3 export PATH=$MAVEN_HOME/bin:$PATH

      (4) 生效環境變量

      source /etc/profile

      (5) 檢查版本信息

      mvn -v

      (1) 下載 & 解壓軟件包

      cd /root/soft/ wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.6-bin.tar.gz tar -zxvf apache-ant-1.10.6-bin.tar.gz

      (2) 配置環境變量。

      vi /etc/profile #文檔末尾添加如下內容 export ANT_HOME=/root/soft/apache-ant-1.10.6 export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH

      (3) 生效環境變量

      source /etc/profile

      (4) 檢查版本信息

      ant -version

      2. 編譯

      cd /root/soft/ wget https://github.com/hyperic/sigar/archive/sigar-1.6.4.zip unzip sigar-1.6.4.zip

      cd /root/soft/sigar-sigar-1.6.4/bindings/java ant

      [cc]gcc: error:unrecongnized command line option '-m64'

      解決方法:將鯤鵬平臺對應的編譯選項設置為 -mabi=lp64 。

      #查詢m64出現的地方 grep -r "m64" ./ #進入查詢出來的文件 vi hyperic_jni/src/org/hyperic/jni/ArchNameTask.java #將文件原 -m64 改為 -mabi=lp64

      /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

      解決方法:

      a. 在系統頭文件路徑下搜索關鍵字 major 和 minor ,查看頭文件名。

      grep -r "major(" /usr/include/ grep -r "minor(" /usr/include/

      b. 將文件 sigar-sigar-1.6.4/src/os/linux/linux_sigar.c 中,引入頭文件 sys/sysmacros.h 。

      vi /root/soft/sigar-sigar-1.6.4/src/os/linux/linux_sigar.c

      /*添加頭文件*/ #include

      Error:致命錯誤:沒有那個文件或目錄

      解決方法:

      a. 下載 rpc 源碼。

      cd /root/soft/ wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz

      b. 解壓縮 rpc 源碼包。

      tar -zxvf rpcsvc-proto-1.4.tar.gz

      c. 進入到源碼目錄。

      cd rpcsvc-proto-1.4

      d. 執行項目構建。

      ./configure

      e. 執行項目編譯。

      make

      f. 完成項目安裝。

      make install

      g. 將rpc復制到指定目錄。

      cp /usr/include/gssrpc/rpc.h /usr/include/rpc/

      3. 構建

      cd /root/soft/ #下載 wget https://github.com/gridkit/sigar-lib/archive/sigar-lib-1.6.4.tar.gz #解壓 tar -zxvf sigar-lib-1.6.4.tar.gz

      cd /root/soft/sigar-sigar-1.6.4/bindings/java/sigar-bin/lib/ cp libsigar-aarch64-linux.so /root/soft/sigar-lib-sigar-lib-1.6.4/src/main/resources/sigar-1.6.4 cd /root/soft/sigar-lib-sigar-lib-1.6.4/src/main/resources/sigar-1.6.4/ rm -rf libsigar-x86-linux.so

      在有pom的目錄下執行:

      cd /root/soft/sigar-lib-sigar-lib-1.6.4 mvn clean package mvn package

      【ERROR】Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test

      解決方法一:修改配置文件 pom.xml

      vim pom.xml

      在profiles標簽下,添加如下內容:

      org.apache.maven.plugins maven-surefire-plugin 2.18.1 true

      解決方法二:為指令添加參數跳過檢測

      在使用mvn package進行編譯、打包時,Maven會執行src/test/java中的JUnit測試用例,有時為了跳過測試,會使用參數-DskipTests和-Dmaven.test.skip=true,這兩個參數的主要區別是:

      -DskipTests,不執行測試用例,但編譯測試用例類生成相應的class文件至target/test-classes下。

      #示例 mvn clean package -DskipTests mvn package -DskipTests

      -Dmaven.test.skip=true,不執行測試用例,也不編譯測試用例類。

      #示例 mvn clean package -Dmaven.test.skip=true mvn package -Dmaven.test.skip=true

      四、掃描新構建的 sigar-lib-1.6.4.jar

      將新構建的包拷貝至掃描路徑下:

      cd /root/soft/sigar-lib-sigar-lib-1.6.4/target/ cp sigar-lib-1.6.4.jar /opt/portadv/portadmin/package/

      修改文件目錄權限:

      關于 sigar-lib-1.6.4.jar 遷移到 aarch64 下——記錄一次遷移過程

      chmod -R 777 /opt/portadv/portadmin/package/

      軟件遷移再次掃描,結果顯示:

      我們發現僅解決了 libsigar-x86-linux.so 這個 so 庫的問題,其他的 so 庫依舊存在。這是因為 java 應用通過 JNI 訪問動態庫時,會根據當前服務器的架構來判斷調用哪個庫。比如,鯤鵬是 aarch64 架構,它就會去找 aarch64 的 so 。如果運行在 x86 服務器上,就會找 x86 命名的對應的 so 。即在源碼中刪除以上檢測對應的 so 庫后進行打包,對于這個 Jar 包的正常使用不構成任何問題。

      注意,在針對這些 so 庫進行移動時,需要將其移出該源碼包,而不是僅將后綴名改為 ".bak" 就可以,如下圖所示:

      最終結果如下:

      參考資料:

      [1] 【編譯指導】sigar-lib環境搭建-OpenEuler 20.03

      https://bbs.huaweicloud.com/forum/thread-130359-1-1.html

      [2] 【編譯指導】sigar-lib-1.6.4.jar編譯指導

      https://bbs.huaweicloud.com/forum/thread-125803-1-1.html

      [3] yum install提示缺少openssl函數解決方案

      https://bbs.huaweicloud.com/forum/thread-100729-1-1.html

      [4] 鯤鵬代碼遷移工具 > 最佳實踐 > 實踐7:MySQL源碼的內存一致性實踐 > 源碼遷移

      https://support.huaweicloud.com/bestpractice-pa-kunpengdevps/memoryconsistency_21_0003.html

      JAR yum 代碼遷移 鯤鵬

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel2010怎么刪除空白行(excel中空白行怎么刪除)
      下一篇:wps中文字超級鏈接點擊了卻沒有反應(wps網頁超鏈接點擊沒反應)
      相關文章
      亚洲欧洲日产韩国在线| 亚洲中文字幕无码中文字在线| 国产亚洲一区二区三区在线| 亚洲精品国精品久久99热| 亚洲国产成人综合精品| 色天使亚洲综合在线观看| 亚洲精品伊人久久久久| 亚洲日韩中文字幕| 亚洲无人区视频大全| 亚洲理论片中文字幕电影| 亚洲大香人伊一本线| 亚洲一区二区三区免费在线观看| 亚洲国产精品成人精品软件 | 亚洲成在人天堂一区二区| 亚洲AV永久无码精品一百度影院| 亚洲国产精品成人精品无码区在线 | 亚洲第一页在线播放| 久久亚洲AV成人无码软件| 亚洲首页在线观看| 亚洲国产成人手机在线电影bd | 久久亚洲高清综合| 伊人婷婷综合缴情亚洲五月| 亚洲熟妇无码另类久久久| 久久九九亚洲精品| 亚洲国产成人精品不卡青青草原| 色婷婷亚洲十月十月色天| 亚洲综合久久成人69| 亚洲一级毛片视频| 亚洲最大中文字幕无码网站| 亚洲乱亚洲乱妇无码| 深夜国产福利99亚洲视频| 亚洲人午夜射精精品日韩| 亚洲中文字幕在线乱码| 亚洲福利在线视频| 亚洲av日韩av无码av| 亚洲精品无码久久久久APP| 五月婷婷亚洲综合| 亚洲色偷偷偷鲁综合| 亚洲国产一区二区a毛片| 亚洲欧洲校园自拍都市| 中文字幕乱码亚洲精品一区|