编译ambalink时发现出现如下错误:
关键错误信息:
解决方法:
方法一
1. 进入/home/lc/amba/ambalink_sdk_3_10/output.oem/a12_ambalink/build/host-ncurses-5.9/include 目录
2. 删除 curse.h 文件
3. 修改 curses.tail 文件:
将 extern NCURSES_EXPORT(bool) mouse_trafo (int*, int*, bool); /* generated */
改为 extern NCURSES_EXPORT(bool) mouse_trafo (int*, int*, bool);
也就是去掉注释 /* generated */
参考文档:https://www.linuxidc.com/Linux/2016-03/129318.htm
PS: 因本身错误信息中无具体出错位置,刚开始未选择此方式,尝试各种方式仍无法解决问题后,只能死马当活马医,发现此错误解决,虽解决问题,但疑惑仍在。
方法二
1. 进入 /home/lc/amba/ambalink_sdk_3_10/dl目录
2. 解压 ncurses-5.9.tar.gz: tar -zxvf ncurses-5.9.tar.gz
3. 进入解压的 ncurses-5.9/include目录: cd ncurses-5.9/include/
4. 修改 ncurses.tail 文件,如 方法一 中的 第 3 步
5. 退回 dl 目录,并备份ncurses-5.9.tar.gz 包: mv ncurses-5.9.tar.gz ncurses-5.9.tar.gz.bak
6. 打包ncurses-5.9: tar zcvf ncurses-5.9.tar.gz ncurses-5.9(同时将打包文件备份一份在其他目录)
7. 进入编译目录 /home/lc/amba/ambalink_sdk_3_10/output.oem/a12_ambalink/
删除 host-ncurses-5.9: rm -rf build/host-ncurses-5.9
重新编译,发现如下错误:
很明显,hash值与期待的不一致,导致错误,且重新下载了此文件。
9. 退回dl 目录,并将 ncurses-5.9.tar.gz 换成第 6 步备份在其他目录的打包文件
10. 执行第7步,重新编译后发现此编译错误正式解决。
PS:
问题:第9 步时为什么要使用第 6步 备份在其他目录的 ncurses-5.9.tar.gz 的文件?
答: 是因为重新打包后,ncurses-5.9.tar.gz文件的hash值发生了改变,即使我没有改变 ncurses-5.9中的任何文件。
所以在这我采取了一种取巧的方式。当然理论上也可以计算打包的ncurses-5.9.tar.gz的hash值,再将此hash值写入
ncurses.hash 文档中。