1.主题
V系列多媒体mpp sample外编方法
2.问题背景
用户希望Tina SDK 能提供编译工具链,多媒体库和头文件,使得自己编写的应用能编写Makefile 去链接多媒体库来编译生成app应用。 介于此方法,本FAQ提供一份编译系统demo样例。 里面包含说明了:
- Tina SDK 如何输出多媒体库;
- 如何编写Makefile 去链接多媒体库;
- 如何将Tina SDK 里面MPP的sample 放到这里进行编译;
- 不需要Tina SDK 如何重新打包成全志固件;
- 指导如何制作SPINOR 的烧录器固件;
3.解决办法
请下载附件的编译系统,并放到linux 上运行。 执行./build.sh 既可以编译。每个目录下都有个REAMD说明,请查看。
README:
本编译系统是一个演示全志V系多媒体mpp sample 脱离Tian SDK 编译的并编译后放到rootfs下重新做固件的一个demo
1. 本编译系统目录结构介绍
代码语言:javascript复制├── aw_pack_src #这个目录是V系列Tina SDK 编译打包后输出的目录,里面包含了库和分区文件
├── build.sh #编译脚本
├── Makefile #编译Makefile,可作为自己工程的参考
├── output #编译后的应用和中间产物
├── sample #sample 放置的目录
├── share_lib #需要依赖的动态库(设备端rootfs也有)
├── mk_firmware #制作全志固件的脚本
└── toolchain #编译工具链
2. 使用方法:
①将V系列多媒体sample 拷贝到 ./sample
目前下。阅读./sample/README
了解详情;
②将Tina SDK 新输出的文件夹aw_pack_src
重新替换当前的./aw_pack_src()
③执行 ./build.sh
进行编译
④编译成功后。在./out
可看到 sample 和 strip 后的sample
3. Tina SDK 如何生成新的aw_pack_src(库和头文件)来替换?
- 选上配置
make menuconfig --->Target Images --->[*]support pack out of tina
- pack 打包,然后会在out/xx方案/生成一个目录:
aw_pack_src
,将此目录拷贝出来即可
4. 重新替换了个sample,但编译出错怎么解决?
- cannot find -lxx 库
因为多媒体的库会根据
make meunconfig
来配置一些功能组件。如果需要增加/裁剪功能,则编译出来可能就多或少一些库了。 如果发现报错cannot find -lxx
, 可以直接尝试修改Makefile,把这个-lxxx 去掉再编译试试。 - undefined reference xxx: 函数
因为多媒体的库会根据
make meunconfig
来配置一些功能组件。如果需要增加/裁剪,则编译出来可能就多或少一些库了。 如果发现报错undefined reference xxx:
,则可以库目录下执行grep -rn "xxx"
, 看能不能搜索出一些结果是关于库的,如:
grep -rn "AW_MPI_SYS_Init"
代码语言:javascript复制Binary file ./aw_pack_src/lib_aw/lib/eyesee-mpp/libaw_mpp.a matches
搜到AW_MPI_SYS_Init 结果在libaw_mpp.a库里面。 这时候在Makefile里面 加入-law_mpp 即可。
如果在本目录搜不到,则可以去Tina SDK目录搜索:
代码语言:javascript复制grep -rn "AW_MPI_SYS_Init" out/v851se-perf1/staging_dir/target/usr/lib #注意v851se-perf1 是板子的名称。 这个目录下是SDK 编译出来的所有库 。
附件:sample_ex_compile.tar.gz