當前位置:首頁 » 編程軟體 » osapp分離編譯

osapp分離編譯

發布時間: 2023-06-18 17:56:14

❶ [openharmony]liteos-a編譯過程分析

最近搞一個sensor接入openharmony的事情,在分析源碼中的加速度計驅動相關源碼時,發現不緊有BUILD.gn文件,還有Makefile文件,並且裡面都有記錄源文件路徑。所以很困惑,openharmony是通過gn+ninja編譯的還是通過make編譯的?
為了搞清楚,所以針對liteos-a系統下的編譯過程進行分析,在這里記錄一下

通過官方文檔看,liteos-a系統編譯時用的是官方的hb命令 hb set 和 hb build 命令,所以入口肯定是hb工具
查看openharmony源碼中build目錄下有一個lite/hb目錄(hb命令的源碼目錄,使用python腳本

看鴻蒙研究站裡面有一篇介紹hb命令的調試方法,通過vscode+python插件調試,參見 《v59.xx 鴻蒙內核源碼分析(構建工具篇) | 順瓜摸藤調試鴻蒙構建過程》

設置好之後就可以開始在vscode上調試

這個是整個編譯的重點,通過調試可以看到最終是調用了gn/ninja/fs_make,如下分析

這個就是整體的編譯過程了,先調用gn生成ninja文件,再通過ninja進行編譯,最後通過fs_make製作鏡像

因為內容太多,下面對這三個編譯動作先做個整體的介紹,後續再對每一個進行詳細分析

繼續調試,會先進入 gn_build 介面,看實現就是調用了 gn gen 命令,如下

查看gn_cmd變數,詳細命令為(比較多,經過了整理):

這個命令之後,就會將工程中所有用到的 BUILD.gn 文件轉換成 <mole_name>.ninja 文件(類似 makefile )供後面 ninja 命令(類似 make )調用並進行編譯

再繼續調試就會進入 ninja_build 介面,實現以及執行的詳細的 ninja 命令如下

這個命令與 make 命令類似,但是注重速度(詳細信息可以在網上搜索兩者區別);此命令執行即是通過build.ninja/toolchain.ninja/各BUILD.gn轉換的.ninja來進行編譯,並生成.bin/.so/.a等文件

整個編譯OK之後會輸出如下圖中成功信息

在out目錄下就會生成燒錄用到的鏡像文件,如下圖

❷ 如何在MacOSX Lion上編譯VLC media player

11.03
在Mac OS X Lion下編譯VLC media player
Prerequisite
Mac OS X Lion
XCode 4.4.1
0.建立一個文件夾並進入
$ mkdir vlc_osx && cd vlc_osx
1.設置編譯器
$ export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
$ export CXX=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
$ export OBJC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
2. 下載源碼至本地
$ git clone git://git.videolan.org/vlc.git
3. 編譯autoconfig等工具
$ cd vlc/extras/tools
$ ./bootstrap && make
$ cd ../..
$ export PATH=$PWD/extras/tools/build/bin:$PATH
(注意第四項設置非常重要,確保自行編譯生成的工具所在的路徑在系統原有路徑之前,否則會調用
系統原有的lib tool工具,由於版本問題,可以會導致下面的步驟出錯)
4. 設置操作系統版本
$ export OSX_VERSION=10.7
5. 編譯
$ cd contrib
$ mkdir -p osx && cd osx
$ ../bootstrap --host=x86_64-apple-darwin11 --build=x86_64-apple-darwin11
6.編譯第三方庫
6.1 下載編譯好的第三方庫(推薦)
$ make prebuilt
6.2 從源碼自行編譯第三方庫(反正我是沒有編譯成功)
$ make -j4 .gettext
$ export PATH=$PWD/../x86_64-apple-darwin11/bin:$PATH
7.Bootstrap VLC
$ cd ../..
$ ./bootstrap
8.配置編譯選項(Configure)
$ mkdir -p build && cd build
$ ../extras/package/macosx/configure.sh --enable-debug --disable-ncurses --host=x86_64-apple-darwin11 --build=x86_64-apple-darwin11
9.編譯VLC
$ make -j4 或 $./compile.sh
10.開始使用
此時在當前目錄下(即build目錄)下應有一個VLC.app目錄
$VLC.app/Contents/MacOS/VLC
應該可以看到vlc media player正確啟動了
Reference
http://wiki.videolan.org/OSXCompile

❸ 安卓app主要用什麼編程語言的

安卓App用Java和Kotlin作為開發語言。

Google IO 2017宣布了 Kotlin 會成為 Android 官方開發語言。在Kotlin 語言出現之前,幾乎所有的安卓應用程序都是使用Java語言編寫的。

(3)osapp分離編譯擴展閱讀

Google在今年I/O2017開發者大會中宣布,正式把Kotlin納入Android程序的一級開發語言(First-classlanguage),並與開發團隊JetBrains合組非牟利基金會推廣Kotlin。據多間外國媒體報導,這是GoogleI/O開發者大會中引來最多歡呼聲的消息。

Kotlin將於AndroidStudio3.0得到支持,JetBrians指開發者不用再安裝額外元件或擔心兼容問題。Kotlin能與Java互通,但擁有Java不支持的功能。Google相信利用Kotlin可使Android程序開發更快捷有趣,但他們補充,此舉絕非取代Java和C++的官方支持。

❹ UCOSII系統編譯時,老出現app.obj : error LNK2001: unresolved external symbol _OSFlagQuery

unresolved external symbol

造成這個錯誤的原因,是鏈接找不到函數的實體或實體歧義。造成錯誤的可能原因很多,如果你確定有函數實體並且app已經包含了頭文件,那麼要麼是包含順序、包含關系錯誤,要麼是定義歧義(找到多個可能的定義)。
檢查APP這個源文件的包含頭文件順序,以及各個頭文件中加入的嵌套包含。檢查是否有多個函數實體。檢查是否存在重復包含現象。

熱點內容
java位與運算 發布:2025-02-08 18:48:22 瀏覽:214
sift演算法詳解 發布:2025-02-08 18:35:23 瀏覽:579
linux標准錯誤的是 發布:2025-02-08 18:32:07 瀏覽:915
蠻多小說怎麼緩存書架的小說 發布:2025-02-08 18:30:16 瀏覽:888
光遇花開腳本封號嗎 發布:2025-02-08 18:23:15 瀏覽:534
怎麼弄ld帳號和密碼 發布:2025-02-08 18:11:42 瀏覽:628
新逍客20發動機壓縮比 發布:2025-02-08 17:58:10 瀏覽:115
qq號和密碼我都知道為什麼登不上 發布:2025-02-08 17:52:21 瀏覽:872
寶塔伺服器ip進不去 發布:2025-02-08 17:52:18 瀏覽:382
擔保中介源碼 發布:2025-02-08 17:14:37 瀏覽:413