交叉編譯.so到鴻蒙使用

?以下是在 Ubuntu 20.04 系統上的操作,tpc_c_cplusplus 他是把編譯的流程都給寫進去了,你只需要關注你要編譯的庫配置好環境就行了。

第一步:下載 tpc_c_cplusplus? 倉庫地址:??

GitCode - 全球開發者的開源社區,開源代碼托管平臺

openharmony-sig 組織已經寫好了腳本,先進入他的?thirdparty 目錄下,找你想要編譯的庫;

第二步:如果你里有你需要用的庫,就進入到??lycium 目錄下,開始嘗試編譯; 以 libxml2 為例編譯;?

./build.sh libxml2

這個時間,如果你沒配置環境變量,他會提示你的;

?

第三步: 配置環境變量:配置前去?下載中心?下載?command Line Tools for HarmonyOS,下載完配置好 OHOS_SDK 以及其他編譯需要用到的工具,你可以配置到全局,我這里就臨時配置一下:

export OHOS_SDK=~/home/command-line-tools/sdk/default/openharmonyexport AS=${OHOS_SDK}/native/llvm/bin/llvm-as
export CC="${OHOS_SDK}/native/llvm/bin/clang --target=aarch64-linux-ohos"
export CXX="${OHOS_SDK}/native/llvm/bin/clang++ --target=aarch64-linux-ohos"
export LD=${OHOS_SDK}/native/llvm/bin/ld.lld
export STRIP=${OHOS_SDK}/native/llvm/bin/llvm-strip
export RANLIB=${OHOS_SDK}/native/llvm/bin/llvm-ranlib
export OBJDUMP=${OHOS_SDK}/native/llvm/bin/llvm-objdump
export OBJCOPY=${OHOS_SDK}/native/llvm/bin/llvm-objcopy
export NM=${OHOS_SDK}/native/llvm/bin/llvm-nm
export AR=${OHOS_SDK}/native/llvm/bin/llvm-ar
export CFLAGS="-fPIC -D__MUSL__=1"
export CXXFLAGS="-fPIC -D__MUSL__=1"

配置好后,? 再運行:

./build.sh libxml2

cke_27323.gif

如果你還有工具沒有安裝, 他會提示你,我第一次的時候,就遇到了 cmake? 沒有安裝的提示:

?

然后, 這里安裝完后,還是有問題,我用默認安裝的 cmake 的版本有點低,如果你也遇到,可以去下載這個:

wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.tar.gz

下載完后,配置到PATH:cmake --version 查一下當前使用的版本是對的;?

export PATH=~/wgx/cmake-3.28.3-linux-x86_64/bin:$PATH
cmake --version
cmake version 3.28.3

拷貝編譯工具

為了簡化開發中命令的配置,我們針對arm架構以及aarch64架構集成了幾個編譯命令,存放在lycium/Buildtools目錄下,在使用lycium工具前,需要將這些編譯命令拷貝到SDK對應的目錄下,具體操作如下:

    cd lycium/Buildtools                        # 進入到工具包目錄sha512sum -c SHA512SUM                      # 可校驗工具包是否正常, 若輸出"toolchain.tar.gz: OK"則說明工具包正常,否則說明工具包異常,需重新下載tar -zxvf toolchain.tar.gz                  # 解壓拷貝編譯工具cp toolchain/* ${OHOS_SDK}/native/llvm/bin  # 將命令拷貝到工具鏈的native/llvm/bin目錄下

設置編譯機cmake識別OHOS系統

由于sdk中的cmake版本過低, 導致很多開源庫在cmake階段報錯. 這個時候就需要用戶在編譯機上安裝一個高版本的cmake(推薦使用3.26及以上版本). 但是 cmake官方是不支持OHOS的. 解決方案:

cp $OHOS_SDK/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/OHOS.cmake xxx(代表你編譯機安裝的cmake的路徑)/cmake-3.28.3-linux-x86_64/share/cmake-3.26/Modules/Platform

做完以上這些,再次運行??./build.sh libxml2?

?

編譯的產物會在??lycium/usb 目錄下, 就會有 libxml2 文件夾,進入 libxml2,里面是長這樣的,然后把include 和 lib 拷貝到鴻蒙工程里就可以使用了。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94325.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94325.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94325.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LLaMA-Factory 中配置文件或命令行里各個參數的含義

常見參數分類 & 含義對照表: 🔹模型相關參數含義model_name_or_path基礎模型的路徑(本地或 HuggingFace Hub 上的名字,如 meta-llama/Llama-2-7b-hf)adapter_name_or_pathLoRA/Adapter 權重路徑(如果要…

JavaScript 性能優化實戰技術文章大綱

一、引言1.1 背景闡述在當今 Web 應用高度交互化、復雜化的趨勢下,JavaScript 作為核心腳本語言,其性能優劣直接決定了用戶體驗的好壞。從單頁應用(SPA)的流暢運行,到復雜數據可視化的實時交互,JavaScript …

正點原子【第四期】Linux之驅動開發學習筆記-2.1LED燈驅動實驗(直接操作寄存器)

前言: 本文是根據嗶哩嗶哩網站上“正點原子【第四期】手把手教你學Linux系列課程之 Linux驅動開發篇”視頻的學習筆記,該課程配套開發板為正點原子alpha/mini Linux開發板。在這里會記錄下正點原子 I.MX6ULL 開發板的配套視頻教程所作的實驗和學習筆記內…

【GM3568JHF】FPGA+ARM異構開發板 測試命令

本章節的命令操作均在板卡的終端執行 1 初探/sys目錄 與/proc目錄類似,/sys目錄下的文件/文件夾向用戶提供了一些關于設備、內核模塊、文件系統以及其他內核組件的信息, 如子目錄block中存放了所有的塊設備;子目錄bus中存放了系統中所有的總…

【Win】Motrix+Aria2瀏覽器下載加速

系統安裝Motrix Motrix官網下載,推薦下載NSIS Installer 安裝版 瀏覽器安裝Aria2 下載Aria2插件,然后開發者模式安裝到瀏覽器 Aria2擴展選項的配置如下: 端口號需要改成Motrix的,默認是16800

SpringBoot applicationContext.getBeansOfType獲取某一接口所有實現類,應用于策略模式

本文介紹了如何在Springboot項目中通過ApplicationContext獲取接口的實現類,并通過枚舉策略模式避免if/else,展示了如何使用getBeansOfType獲取TrafficModeService的實現,以及如何在實際場景中應用,如查詢交通方式費用 1 在實際工…

大模型問題:幻覺分類+原因+各個訓練階段產生幻覺+幻覺的檢測和評估基準

1. 什么是幻覺?大模型出現幻覺,簡而言之就是“胡說八道”。 用《A Survey on Hallucination in Large Language Models》1文中的話來講,是指模型生成的內容與現實世界事實或用戶輸入不一致的現象。 研究人員將大模型的幻覺分為事實性幻覺&…

智慧冷庫物聯網解決方案——實現降本增效與風險可控的冷庫管理新范式

一、冷庫管理痛點設備孤島化:冷庫品牌、型號分散,缺乏統一接入標準,數據互通難,依賴人工巡檢,故障響應滯后。能耗黑洞:制冷系統能耗占冷庫總運營成本的60%以上,傳統管理粗放,缺乏動態…

太空生活的八種要素

數代以來,科學家們一直在銀河系中搜尋地外行星存在生命的證據。他們試圖找到一組特定的環境條件與化學物質,在恰當的時間、恰當的地點交匯融合。 通過研究人類、植物、動物及微生物在地球上的生存與繁衍方式,科學家們已識別出生命演化所需的關…

Flutter 小技巧之有趣的 UI 骨架屏框架 skeletonizer

很久沒有更新過小技巧系列,今天簡單介紹一個非常好用的骨架屏框架 skeletonizer ,它主要是通過將你現有的布局自動簡化為簡單的骨架,并添加動畫效果來實現加載過程,而使用成本則是簡單的添加一個 Skeletonizer 作為 parent &…

基于SpringBoot的寵物用品系統【2026最新】

作者:計算機學姐 開發技術:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源碼”。 專欄推薦:前后端分離項目源碼、SpringBoot項目源碼、Vue項目源碼、SSM項目源碼、微信小程序源碼 精品專欄:…

MongoDB 分片集群修改管理員密碼

記得關注一下博主,博主每天都會更新IT技術,讓你有意想不到的小收獲哦^_^ 文章目錄*記得關注一下博主,博主每天都會更新IT技術,讓你有意想不到的小收獲哦^_^*一、注釋MongoDB分片集群認證參數(三臺主機都要操作&#xf…

C++函數重載與引用詳解

一、函數重載:同名函數的 “差異化生存”?1. 概念定義?函數重載(Function Overloading)是 C 的重要特性,指在同一作用域內,允許存在多個同名函數,但要求這些函數的參數列表必須不同。(參數個數…

2025-08-17 李沐深度學習16——目標檢測

文章目錄1 介紹1.1 實際應用1.2 邊界框1.3 數據集2 錨框2.1 什么是錨框2.2 交并比2.3 分配標簽2.4 非極大值抑制3 經典目標檢測網絡3.1 R-CNN3.1.1 R-CNN (原始版本)3.1.2 Fast R-CNN3.1.3 Faster R-CNN3.1.4 Mask R-CNN3.2 單階段檢測器:SSD 和 YOLO3.2.1 SSD (Sin…

Bluedroid vs NimBLE

🔹 對比:Bluedroid vs NimBLE 1. 協議棧體積 & 內存占用 Bluedroid:體積大,RAM 占用也大(幾十 KB 到上百 KB)。NimBLE:輕量級,內存占用大概是 Bluedroid 的一半甚至更少。 &…

(純新手教學)計算機視覺(opencv)實戰八——四種邊緣檢測詳解:Sobel、Scharr、Laplacian、Canny

邊緣檢測詳解:Sobel、Scharr、Laplacian、Canny邊緣檢測是圖像處理和計算機視覺中的重要步驟,主要用于發現圖像中亮度變化劇烈的區域,即物體的輪廓、邊界或紋理特征。OpenCV 提供了多種常用的邊緣檢測算子,本教程將通過四種方法帶…

PyTorch 環境配置

目錄一、安裝 CUDA二、安裝 PyTorch1. 創建虛擬環境2. 安裝 PyTorch三、在 PyCharm 上創建一個 PyTorch 項目參考文章: 【2025年最新PyTorch環境配置保姆級教程(附安裝包)】 【超詳細 CUDA 安裝與卸載教程(圖文教程)】…

鴻蒙中冷啟動分析:Launch分析

啟動的分類(熱身環節) 啟動動類型觸發條件系統開銷 & 速度主要優化方向冷啟動應用進程不存在(首次啟動或進程被殺后啟動)最高,需創建進程、加載資源、初始化所有組件主要優化目標,減少主線程任務&…

告別盲目排查,PolarDB+DAS Agent智能運維新突破

1.概述 周五下午6點正準備下班,數據庫CPU突然爆滿,業務告警響成一片,DBA卻要手動翻查CPU/內存/負載等多個監控指標,還要查詢是否有新增慢SQL,死鎖等問題?” 這可能是數據庫DBA最鬧心的場景了,…

Linux------《零基礎到聯網:CentOS 7 在 VMware Workstation 中的全流程安裝與 NAT 網絡配置實戰》

(一)Linux的發行版Centos安裝與配置 下載Linux發行版本Centos:centos-7-isos-x86_64安裝包下載_開源鏡像站-阿里云點擊CentOS-7-x86_64-DVD-2009.torrent ,CentOS-7-x86_64-DVD-2009.torrent是官方提供的 BT 種子文件(176.1 KB&a…