Makefile:795: recipe for target '../obj_s/lib_gen.o' failed

编译ambalink时发现出现如下错误:

Makefile:795: recipe for target '../obj_s/lib_gen.o' failed_第1张图片

关键错误信息:

Makefile:795: recipe for target '../obj_s/lib_gen.o' failed_第2张图片

解决方法:

方法一

    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

    重新编译,发现如下错误:

      Makefile:795: recipe for target '../obj_s/lib_gen.o' failed_第3张图片

     很明显,hash值与期待的不一致,导致错误,且重新下载了此文件。

   8. 通过对代码结构分析发现: Makefile:795: recipe for target '../obj_s/lib_gen.o' failed_第4张图片

     打开此文档发现:

因此修改此文件,将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 文档中。

 

你可能感兴趣的:(工作总结)