在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

三方庫移植OpenHarmony過程

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-09-22 10:11 ? 次閱讀

戰碼先鋒,PR征集令(以下簡稱“戰碼先鋒”)第二期正如火如荼地進行中,涉及OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)主干倉、SIG倉、三方庫,共計1000+代碼倉任君挑戰。

在戰碼先鋒活動中,我們注意到開發者對三方庫移植有著濃厚的興趣。三方庫是基于標準Linux系統的C/C++開源庫,例如OpenCV、LZMA壓縮算法、ZXing-cpp圖像處理庫,三方庫移植能為OpenHarmony項目補齊更多功能或組件,對繁榮生態非常重要。

三方庫移植也為參與OpenHarmony貢獻提供了另外一種思路,我們希望通過實戰經驗的分享鼓勵更多感興趣的開發者動手移植自己心儀的三方庫。為此,我們邀請目前還是一名大三學生,也是戰碼先鋒優秀貢獻者,OpenHarmony啃論文俱樂部優秀學員——賈佳豪(社區網名:離北況歸)進行分享,他在完成了一個三方庫在OpenHarmony標準系統上的移植工作后,總結了以下經驗。

四步實現三方庫移植:1、在Linux下編譯要移植的三倉庫,分析編譯過程;2、將要移植的三方庫加入編譯框架中以及產品引用;3、增量編譯出動態鏈接庫和可執行文件推送到開發板上;4、在開發板上驗證移植是否成功、API接口導出。

ebfeeffe-39b7-11ed-9e49-dac502259ad0.jpg

第一步

三方庫下載最新分支代碼后在Linux下編譯,分析編譯過程。 觀察原生庫目錄結構或者Readme可以知道該如何編譯,一般有如下兩種編譯方式: ①在原生庫根目錄中,存在CMakeLists.txt文件。在原生庫下新建build目錄通過cmake或者cmake-gui生成makeflie然后make。 ②在原生庫目錄中存在autogen.sh,configure.ac文件,原生庫使用Makefile.am構建,./autogen.sh再./configure命令生成Makefile,最后make、make install。

在Linux下編譯原生庫要配置好編譯環境,安裝cmake、make、automake等工具。

分析編譯過程:

提取編譯出動態鏈接庫和測試用的可執行文件需要的源文件和頭文件、編譯時添加的cflag、編譯器參數以及編譯需要鏈接的庫。該過程分為如下兩種情況:

①在cmake生成makefile的過程中分析build.make、depend.make、flags.make、link.txt等得出三方庫對應的依賴關系。

ec2e1df6-39b7-11ed-9e49-dac502259ad0.png

②使用Makefile.am構建的三方庫通過分析make.am內容可以直接分析編譯動態鏈接庫和測試用的可執行文件需要哪些源文件,而編譯需要添加的編譯器參數和需要鏈接的庫則通過分析三方庫父目錄makefile文件提取。

ec450728-39b7-11ed-9e49-dac502259ad0.png

ee871148-39b7-11ed-9e49-dac502259ad0.png

eeb9e230-39b7-11ed-9e49-dac502259ad0.png

第二步

根據第一步分析得到的結果把三方庫加入OpenHarmony編譯構建體系。 ①定義子系統并加入編譯框架。首先把三方庫放置在OpenHarmony源碼third_party目錄下作為子系統目錄。子系統目錄下創建ohos.build文件,構建時會先讀取該文件。

eeedd5d6-39b7-11ed-9e49-dac502259ad0.png

把子系統配置到build/subsystem_config.json.

ef2652b2-39b7-11ed-9e49-dac502259ad0.png

②定義組件并加入子系統:在上述定義子系統時添加的ohos.build文件中,我們已經定義好了對應的組件。

ef45acc0-39b7-11ed-9e49-dac502259ad0.png

module_list所定義的為該組件的目標,上述定義的目標為測試用的可執行文件。

ef7b1f86-39b7-11ed-9e49-dac502259ad0.png

③定義目標并加入組件:在編寫gn文的時候,我們定義的動態庫以及測試可執行程序都是我們的目標模塊,在每個目標模塊中添加對應的組件名后即將我們的目標模塊加入該組件中。

ef9d6de8-39b7-11ed-9e49-dac502259ad0.png

④產品引用:把子系統及其組件加入產品定義中,以rk3568為例,產品定義文件存在vendor/hihope/rk3568/config.json,以下內容添加到config.json中:

f248c6aa-39b7-11ed-9e49-dac502259ad0.png

第三步

增量編譯出動態鏈接庫和可執行文件,在OpenHarmony源碼執行。

./build.sh --product-name rk3568 --ccache --build-target=移植的三方庫名稱 --target-cpu arm64

(ohos更新到3.2版本后,支持64位系統的編譯,默認情況下編譯的都是32位系統,在編譯命令中添加--target-cpu arm64即可構建64位系統)

第一次編譯可能會報錯,我們根據報錯信息調整編寫的gn文件。消除clang編譯警告,例如-Wimplicit-function-declaration改為-Wno-implicit-function-declaration添加到gn文的cflags信息里面。不推薦直接全量編譯出鏡像燒錄到開發板上。將耗費較多時間,也不便編譯調試。編譯成功生成的動態鏈接庫和測試用的可執行文件在out目錄下。

第四步

在開發板上驗證移植是否成功、API接口導出。

利用hdc_std工具將編譯出的so動態鏈接庫和測試用的可執行文件放到開發板上,驗證移植的三方庫功能是否正常。

f2798f88-39b7-11ed-9e49-dac502259ad0.png

API是指應用程序編程接口,通過API接口可以實現指定的功能,而不需要了解其內部實現細節。API接口導出在pc端,需要編譯生成的動態鏈接庫和測試用的可執行文件。API接口導出思路如下:

①新建allHeads.h,該頭文件中包含所有庫對外導出的頭文件

②新增allDySos目錄,該目錄下放置生成的動態庫

③新增allTests目錄,該目錄下放置所有生成的測試用的可執行文件

④新建自動化測試腳本export_interface.sh,腳本如下,執行時需要給腳本傳入編譯頭文件的參數例如./export_interface.sh -I頭文件所在路徑-D宏定義(編譯所有動態庫時,cflags/cflags_cc中的參數)

cxx="0":mixed_api() {
    while read line    do        if [ $cxx != "1" -o "$4" == "1" ];then            tmp=$line        else            tmp=`echo $line | sed "s/(.*$//g" | sed "s/^.*:://g"`        fi        res=`cat $2 |grep "$tmp" -F`        if [ "$res" != "" ];then            echo "$line" >> $3        fi    done < $1}

以上是部分代碼展現,閱覽全部代碼請打開鏈接

https://gitee.com/openharmony-sig/contest/tree/master/2022_OpenHarmony_thirdparty/speexdsp

f2a51f7c-39b7-11ed-9e49-dac502259ad0.png

再次總結四步要點:1、在Linux下編譯要移植的三倉庫,分析編譯過程;2、將要移植的三方庫加入編譯框架中以及產品引用;3、增量編譯出動態鏈接庫和可執行文件推送到開發板上。4、在開發板上驗證移植是否成功、API接口導出。

備注:三方庫的移植需要搭建好OpenHarmony南向開發環境,也需要有開發板和掌握hdc_std工具的使用。另外,這樣移植有一個前提,與平臺無關(即庫不涉及對os_api有依賴,不涉及opensl以及opengl,ohos上這兩個庫和業界的有一定差異,不涉及硬件,不涉及驅動)。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux系統
    +關注

    關注

    4

    文章

    595

    瀏覽量

    27449
  • 編譯
    +關注

    關注

    0

    文章

    660

    瀏覽量

    32927
  • OpenHarmony
    +關注

    關注

    25

    文章

    3731

    瀏覽量

    16431

原文標題:4步成功將三方庫——speexdsp移植到OpenHarmony

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用OpenHarmonyNDK移植三方Speexdsp

    大家好,我是一名即將本科畢業的OpenHarmony開發者,去年暑假利用了兩個月時間移植了一個語音處理的三方Speexdsp到OpenHarmon
    的頭像 發表于 05-16 10:18 ?2141次閱讀
    使用<b class='flag-5'>OpenHarmony</b>NDK<b class='flag-5'>移植</b><b class='flag-5'>三方</b><b class='flag-5'>庫</b>Speexdsp

    快速移植OpenHarmony三方芯片平臺的方法

    HDF等)的移植。詳細步驟在接下來的章節中介紹。移植三方芯片平臺的步驟下面以樹莓派3b (BCM2837) 為例,演示將OpenHarmony移植
    發表于 04-12 11:08

    4步成功將三方——speexdsp移植OpenHarmony

    歸)進行分享,他在完成了一個三方OpenHarmony標準系統上的移植工作后,總結了以下經驗。四步實現三方
    發表于 09-27 12:02

    OpenHarmony三方適配指南

    本文以OpenHarmony-3.2-Beta4上適配modbus編譯動態為例。獲取三方使用之前要做好代碼溯源,確認可用的版本,開源許可和發布方式等。通過正確的路徑獲取源碼,可以是
    發表于 04-07 09:12

    OpenAtom OpenHarmony 三方創建發布及安全隱私檢測

    OpenAtom OpenHarmony三方(以下簡稱“三方”或“包”),是經過驗證可在OpenHa
    發表于 11-13 17:27

    openharmony三方組件適配移植易于使用的ohos

    項目介紹 項目名稱:MaterialScrollBar 所屬系列:openharmony的第三方組件適配移植 功能:易于使用的ohos,可輕松實現滾動跟隨效果 項目
    發表于 03-30 10:44 ?0次下載

    openharmony三方組件適配移植的多選列表功能教程

    項目介紹 項目名稱:drag-select-recyclerview 所屬系列:openharmony的第三方組件適配移植 功能:drag-select-recyclerview是一個簡單的多選列表
    發表于 03-30 10:48 ?1次下載

    openharmony三方組件適配移植的股價圖表

    項目介紹 項目名稱:ikvStockChart 所屬系列:openharmony的第三方組件適配移植 功能:ikvStockChart一個簡單的openharmony圖表
    發表于 04-01 09:30 ?2次下載

    openharmony三方組件適配移植的圖表功能

    項目介紹 項目名稱:achartengine 所屬系列:openharmony的第三方組件適配移植 功能:achartengine是應用程序的圖表。它目前支持以下圖表類型:折線圖、面
    發表于 04-01 09:40 ?1次下載

    openharmony三方組件適配移植的SVGA動畫渲染

    項目介紹 項目名稱:SVGAPlayer-Ohos 所屬系列:openharmony的第三方組件適配移植 功能:SVGAPlayer-Ohos 是一個輕量的動畫渲染。你可以使用工具從
    發表于 04-02 11:47 ?15次下載

    openharmony三方組件適配移植的okhttp教程案例

    項目介紹 項目名稱:okhttp 所屬系列:openharmony的第三方組件適配移植 功能:PUT,DELETE,POST,GET等請求、文件的上傳下載、加載圖片(內部會圖片大小自動壓縮)、支持
    發表于 04-12 09:25 ?4次下載

    openharmony三方組件適配移植的數據組件

    項目介紹 項目名稱:DBFlow 所屬系列:openharmony的第三方組件適配移植 功能:DBFlow是一個快速、高效、功能豐富數據組件 項目
    發表于 04-13 09:56 ?2次下載

    總結移植三方OpenHarmony的經驗

    三方主要是基于標準 Linux 系統的 c/c++ 開源,所以三方移植工作,首先是在標準
    的頭像 發表于 05-07 15:52 ?6497次閱讀

    鴻蒙三方適配指南

    本文以 OpenHarmony-3.2-Beta4 上適配 modbus 編譯動態為例。 獲取三方 使用之前要做好代碼溯源,確認可用的版本,開源許可和發布方式等。 通過正確的路徑獲
    的頭像 發表于 02-14 09:33 ?3594次閱讀

    【開源三方】bignumber.js:一個大數數學

    點擊藍字 ╳ 關注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony OpenAtom OpenHarmony (以下簡稱“OpenHarmony”)
    的頭像 發表于 08-18 21:05 ?908次閱讀
    主站蜘蛛池模板: 一区二区三区四区精品| 亚洲爱爱图片| 欧美另类高清| 色综合久久久高清综合久久久| 中文字幕第十页| 亚洲地址一地址二地址三| 亚洲电影在线| 日本视频黄色| 口述他拿舌头进去我下面好爽| 狠狠综合| 午夜在线观看免费观看大全| 天堂资源网| 综合啪啪| 久久国产精品自在自线| 亚洲天堂婷婷| 日本黄色小视频在线观看| 黄色在线免费看| 亚洲黄视频| 九九热精品国产| 免费观看视频在线| 综合成人在线| 日韩免费一级毛片| 国产美女激情视频| 噜噜噜色| 爱爱网站免费| 人人干人| 91av视频网站| 亚洲va中文字幕| 免费一级特黄a| www色视频| 久久人人网| 亚欧一区| 色婷婷丁香| 国产乱辈通伦影片在线播放 | 最好看的2019中文字幕免费高清 | 国产三级高清| 奇米网在线观看| 亚洲欧美日韩一区| 色综合天天综合网国产成人网| 国产婷婷色| 苦瓜se影院在线视频网站|