使用python工具对整个系统打包编译整体大家都很熟悉了,但如果只是想熟悉一下代码,那么将应用程序拿出来单独编译也是可行的,我手上是AIC,
所以用范例
applicationssamplecameraapp
做了尝试,代码很简单,大家手上都有,这里就不做解释了。
首先是不带参数,可以在Linux下运行。
然后加上目标为arm-liteos,并且需要带上相应的库进行编译,可以看到,现在在linux下是不能运行了。
我把它截在一张图片里面了
把a.out文件放到板上
可以看到显示与在Linux中基本一致。
从执行效果来看,显示完全一样,但这个两个文件的差异在哪里呢?
采用二进制编辑器分别打开这两个文件打开看看,连接环境有差异(注意看下面第一行51 00 00 00后面的内容):
Linux下实际调用的还是GCC,
还可以看到其使用的缺省参数:
-mtune=generic -march=x86-64 -g -O2 -std=gnu99 -fgnu89-inline -fmerge-all-constants -frounding-math -fPIC
带上参数,使得运行环境为liteos的话,则显示为Linker LLD
当然如果想查看文本内容,在执行文件中,应该开始可以看到的,如下:
至于在liteos环境里面的a.out文件中Hello之前的*号为什么在执行程序中看不见,我认为可能是clang做的优化,将其余后面相同的内容合并压缩了。如果需要进一步研究,可以考虑用单步编译看看中间文件。
写在最后:
本文着急发出是为了解答群友提出的两个问题:
1、能不能单独编一个程序
2、编译好的程序和运行环境有没有关系
当然更深入的研究还有待展开。