OpenHarmony 開源鴻蒙北向開發——linux使用make交叉編譯第三方庫

這幾天搞鴻蒙,需要編譯一些第三方庫到鴻蒙系統使用。

頭疼死了,搞了一個多星期總算搞定了。

開貼記坑。

?一、SDK下載

1.下載

在linux下使用命令

wget  https://cidownload.openharmony.cn/version/Master_Version/OpenHarmony_5.1.0.54/20250313_021647/version-Master_Version-OpenHarmony_5.1.0.54-20250313_021647-ohos-sdk-public.tar.gz

下載完成的結果是這樣的?

2.解壓?

我們將其放到需要的位置,然后解壓

tar -zxvf version-Master_Version-OpenHarmony_5.1.0.54-20250313_021647-ohos-sdk-public.tar.gz

解壓出來的結果是這樣的

我們選擇linux文件夾進入

使用如下命令講所有的壓縮包解壓

for i in *.zip;do unzip ${i};done 

解壓后的結果

二、配置SDK

1.配置工具包

我們解壓完成之后,記錄一下sdk目錄,用于配置后邊的編譯工具

/home/nanqiu/Desktop/OpenHarmony/build_thirtypart/sdk/14/linux

2.添加權限

然后返回上層,我們給整個sdk目錄添加一個可執行權限

chmod 777 sdk目錄

3.配置環境變量

export OHOS_SDK=/home/nanqiu/Desktop/OpenHarmony/build_thirtypart/sdk/14/linux          ## 配置SDK路徑,此處需配置成自己的sdk解壓目錄
export AS=${OHOS_SDK}/native/llvm/bin/llvm-as
export CC="${OHOS_SDK}/native/llvm/bin/clang --target=aarch64-linux-ohos"    ## 32bit的target需要配置成 --target=arm-linux-ohos
export CXX="${OHOS_SDK}/native/llvm/bin/clang++ --target=aarch64-linux-ohos" ## 32bit的target需要配置成 --target=arm-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"                                            ## 32bit需要增加配置 -march=armv7a
export CXXFLAGS="-fPIC -D__MUSL__=1"                                          ## 32bit需要增加配置 -march=armv7a

這里需要OHOS_SDK配置為咱們之前記錄的目錄。

4.確認開發板所需的命令架構

我們先進入鴻蒙開發板。

博主這里吃了個大坑,硬生生卡了好幾天,幸虧公司大佬出手才渡本菜雞破此劫。

輸入如下指令

 file /system/bin/iptables

確定一下這里的參數是32還是64

講一下為什么要這么干

之前博主編譯的時候,使用uname -a,得到的是64位

于是就按照64位編譯,結果編譯出來的結果在開發板上運行時報錯。

很奇怪,卡很久。

后來才知道,開發板雖然是64位,但是庫卻需要編譯成32位。

這也就是為什么要確認這一步的原因。

學到了!

但是在這一點上,本菜雞不知道為什么,各位如有知道,還望告知。

三、下載第三方庫源碼

這里咱們不著急,先編譯個helloworld。

1.HelloWorld

(1)寫一個代碼

我們新建一個hello.c,內容如下,記得保存

#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}

(2)編譯

我們用如下命令對hello.c進行編譯

sdk目錄/linux/native/llvm/bin/clang --target=arm-linux-ohos -o hello hello.c

這里的arm-linux-ohos 表示32位架構,64位使用aarch64-linux-ohos

編譯后會得到一個hello文件

(3)檢查

我們使用如下命令檢查編譯出來的對不對

file hello

如果和咱們之前在開發板上得到的一樣,就可以了。?

?(4)運行

我們使用壓縮該文件

tar -cvzf hello.tar.gz hello

我們將其打包發到開發板上。

我這里是將其挪到window下,然后使用hdc工具下發的。

在hdc工具上使用如下命令

hdc file send hello.tar.gz 目標地址

開發板上可以看到

我們解壓該文件

tar -zvxf hello.tar.gz

給hello加一個可執行權限

chmod +x hello

運行hello文件,一切正常。

今天先寫到這里,明天將常見的庫都編譯出來,帖子會繼續更新。

參考資料

文檔中心

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

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

相關文章

Selenium Web UI自動化測試:從入門到實戰

引言 在當今快速迭代的軟件開發周期中&#xff0c;自動化測試已成為保障產品質量、提升測試效率的核心手段之一。而針對Web應用的UI自動化測試&#xff0c;Selenium作為最流行的開源工具之一&#xff0c;憑借其跨瀏覽器、多語言支持&#xff08;Python、Java、C#等&#xff09…

Java 大視界 -- Java 大數據中的數據隱私保護技術在多方數據協作中的應用(147)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

編程考古-安德斯·海爾斯伯格(Anders Hejlsberg)回答離開Borland的原因

安德斯海爾斯伯格&#xff08;Anders Hejlsberg&#xff09;是著名的編程語言和工具開發者&#xff0c;曾主導開發了 Turbo Pascal、Delphi&#xff08;Borland 時期&#xff09;&#xff0c;以及加入微軟后參與的 C# 和 TypeScript。關于他離開 Borland 的原因&#xff0c;可以…

西門子仿真實例位置

C:\Users\san\Documents\Siemens\Simatic\Simulation\Runtime\Persistence S7-PLCSIM Advanced V3.0 可以打開文件&#xff0c;刪除重建

【數據庫系統原理】Ch7 數據庫應用設計與開發實例

目錄 大綱7.1 需求描述與分析7.2 系統設計7.3 系統實現7.4 系統測試與維護 習題真題2024-102024-042023-102023-042022-10 大綱 7.1 需求描述與分析 熟悉需求描述與分析的方法,達到"領會"層次。 7.2 系統設計 熟悉根據需求的描述劃分系統的功能模塊,能夠進行初步…

使用 Python 的turtle庫繪制精美圖形

在 Python 編程的世界里&#xff0c;turtle庫是一個非常有趣且實用的工具&#xff0c;它為初學者和有經驗的開發者提供了一個簡單而直觀的方式來進行圖形繪制。本文將詳細講解如何使用turtle庫繪制不同的圖形&#xff0c;包括六邊形、一個特定的多邊形&#xff0c;以及一個由線…

基于linux平臺的C語言入門教程(5)基本數據類型

文章目錄 1. 什么是數據類型&#xff1f;2. C 語言的基本數據類型3. 數據類型的存儲大小4. 示例代碼代碼解析&#xff1a;輸出結果&#xff1a; 5. 常見問題問題 1&#xff1a;float 和 double 的區別是什么&#xff1f;問題 2&#xff1a;unsigned 類型可以存儲負數嗎&#xf…

Bellman_ford 算法——解決負權邊最短路徑問題

卡碼網:94. 城市間貨物運輸 I 94. 城市間貨物運輸 I 題目描述 某國為促進城市間經濟交流,決定對貨物運輸提供補貼。共有 n 個編號為 1 到 n 的城市,通過道路網絡連接,網絡中的道路僅允許從某個城市單向通行到另一個城市,不能反向通行。 網絡中的道路都有各自的運輸成本…

mysql——第二課

學生表 CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,sex varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,age int(11) DEFAULT NULL,c_id int(10) DEFAULT NULL,PRIMARY KEY (id),KEY c_id (c_id),CONSTR…

圖解 ThreadLocal

在 Java 多線程編程的世界里&#xff0c;ThreadLocal 是一個非常實用的工具&#xff0c;它為每個線程提供了獨立的變量副本&#xff0c;避免了多線程環境下的變量共享問題。今天&#xff0c;我們就從內存視角出發&#xff0c;通過一張圖來深入理解 ThreadLocal 的工作原理&…

Sql Server 索引性能優化 分析以及分表

定位需優化語句 根據工具 skywking 或者開啟慢查詢日志 找到 慢sql 的語句根據 執行過程 來 判斷 慢的原因 row filter 指標 看查了多少數據 比例多少 type 看下是單表 還是 join聯表 比如 執行步驟多 沒索引 優化方向 減少執行次數索引 沒索引考慮加索引 加索引 盡量選擇 i…

@JsonSerialize注解

1.簡介 JsonSerialize注解可以自定義改變返回前端的內容,比如:將Student實體類的age字段的值在返回前端之前,由20改為21. 要用到jackson-databind依賴包,在Spring Boot項目中&#xff0c;默認已經集成了Jackson&#xff0c;因此你不需要手動引入Jackson庫。 2.上例子 將Stud…

Java面試黃金寶典5

1. ConcurrentHashMap 和 HashTable 有哪些區別 原理 HashTable&#xff1a;它繼承自 Dictionary 類&#xff0c;是 Java 早期提供的線程安全哈希表。其線程安全的實現方式是對每個方法都使用 synchronized 關鍵字進行同步。例如&#xff0c;在調用 put、get 等方法時&#xff…

vim的一般操作(分屏操作) 和 Makefile 和 gdb

目錄 一. vim的基本概念 二. vim基礎操作 2.1 插入模式 aio 2.2 [插入模式]切換至[正常模式] Esc 2.3[正常模式]切換至[末行模式] shift ; 2.4 替換模式 Shift R 2.5 視圖&#xff08;可視&#xff09;模式 (可以快速 刪除//注釋 或者 增加//注釋) ctrl v 三&…

Linux:基礎IO---文件描述符

文章目錄 1. 前言1.1 C語言文件知識回顧 2. 文件2.1 文件基礎知識 3. 被打開的文件3.1 以C語言為主&#xff0c;先回憶一下C文件接口3.2 過渡到系統&#xff0c;認識文件系統調用3.3 訪問文件的本質3.4 重定向&&緩沖區 序&#xff1a;在深入了解了進程的內容后&#xf…

2025年十大AI工具對比

2025年十大AI工具對比 以下是2025年各大AI工具的詳細對比&#xff0c;涵蓋性能、功能、用戶評價等方面&#xff0c;并以表格形式呈現。數據來源于多個權威來源&#xff0c;確保信息全面且準確。 對比表格 排名AI工具名稱主要功能性能特點用戶評價適用場景1DeepSeek多模態AI、…

JDK 24 發布,新特性解讀!

一、版本演進與技術格局新動向 北京時間3月20日&#xff0c;Oracle正式發布Java SE 24。作為繼Java 21之后的第三個非LTS版本&#xff0c;其技術革新力度遠超預期——共集成24項JEP提案&#xff0c;相當于Java 22&#xff08;12項&#xff09;與Java 23&#xff08;12項&#…

批量圖片壓縮工具,高效減小文件大小并保持質量

在處理大量圖片時&#xff0c;如何高效壓縮文件大小并保持畫質是個常見難題。今天為大家推薦一款專業工具——JPGC&#xff0c;它專為圖片批量處理設計&#xff0c;能快速壓縮JPG/JPEG格式圖片&#xff0c;在減小文件體積的同時盡可能保留畫質&#xff0c;尤其適合處理數碼相機…

【002安卓開發方案調研】之Kotlin+Jetpack開發方案

基于2025年國內移動開發領域的現狀&#xff0c;結合Jetpack Compose的技術特性和生態發展&#xff0c;以下是對KotlinJetpack Compose開發安卓應用的綜合分析&#xff1a; 一、技術與生態成熟度評估 1. 技術成熟度 聲明式UI與開發效率 Jetpack Compose采用聲明式編程模型&…

軟考中級-軟件設計師 準備

軟考中級-軟件設計師 準備 一、軟考相關1.1、考試時間1.2、考試時長1.3、題型和分值&#xff1a; 二、軟考備考2.1、相關書籍2.2、推薦課程&#xff1a;B站up主zst_20012.3、學習路線 一、軟考相關 1.1、考試時間 一年有兩次軟考&#xff0c;一般是五月末和十一月的中旬 以下…