zoukankan      html  css  js  c++  java
  • 【makefile】symbol <函数> : can't resolve symbol 问题分析

      调试程序的时候,在linux编译器上可以编译通过,但是编译生成的firmware烧录到板子上的后出现以下异常:

      

      can't resolve symbol,无法解析元素符号。

      review一下code,定义setBuappValue这个api的.c文件的部分makefile如下

    HI_PKG_NAME = odlapi
    HI_APP_NAME = libhi_odlapi.so
    HI_APP_TYPE = so

      可以看到这个api实际上会生成libhi_odlapi.so这个库。编译没有问题是因为C逻辑语法没有问题,但是在其他module中有调用setBuappValue,getBuappValue这两个api,但是没有将libhi_odlapi.so这个库链过去。所以在调用这个api的其他的module中的function无法实现,出现以上问题。

      解决办法,只需要在调用此api的.c文件的makefile文件链上libhi_odlapi.so,问题解决

    HI_LDFLAGS+=-lhi_odlapi

      tips:为什么刚开始学习makefile是,写的.c文件里可以直接调用printf等一些common的api呢,因为在预编译阶段包含进去的“stdio.h”里面,其实系统把对这些函数的实现都做到名字为libc.so.6的库文件中去了,在没有特别指定时,gcc会到系统默认的路径“/user/lib”下面进行查找,并且链接到lib.so.6库函数中去,这样就能实现printf函数了,这也就是链接的作用。

  • 相关阅读:
    软件补丁问题(网络流24题)
    飞行员配对方案问题(网络流24题)
    [NOIp普及组2011]瑞士轮
    如何在Linux上安装QQ
    [洛谷P2420] 让我们异或吧
    高斯消元
    [SCOI2014]方伯伯的OJ
    [USACO1.3]虫洞
    KMP算法讲解
    [洛谷P1382] 楼房
  • 原文地址:https://www.cnblogs.com/yeanz/p/9585172.html
Copyright © 2011-2022 走看看