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函数了,这也就是链接的作用。

  • 相关阅读:
    对象流(序列化,反序列化)
    随机存取文件流(双性流)
    网络编程
    ByteArrayOutputStream小测试
    Java基础
    IO流实现GBK写入文件然后转换UTF-8
    IO流实现简单的文件的剪切
    递归
    ZKDQ--问题整理
    postman测试上传文件接口
  • 原文地址:https://www.cnblogs.com/yeanz/p/9585172.html
Copyright © 2011-2022 走看看