当前位置:首页 » 编程软件 » 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 浏览:217
sift算法详解 发布:2025-02-08 18:35:23 浏览:580
linux标准错误的是 发布:2025-02-08 18:32:07 浏览:916
蛮多小说怎么缓存书架的小说 发布:2025-02-08 18:30:16 浏览:889
光遇花开脚本封号吗 发布:2025-02-08 18:23:15 浏览:535
怎么弄ld帐号和密码 发布:2025-02-08 18:11:42 浏览:629
新逍客20发动机压缩比 发布:2025-02-08 17:58:10 浏览:116
qq号和密码我都知道为什么登不上 发布:2025-02-08 17:52:21 浏览:873
宝塔服务器ip进不去 发布:2025-02-08 17:52:18 浏览:383
担保中介源码 发布:2025-02-08 17:14:37 浏览:413