Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    【FAQ】全志XR806芯片 如何解决编译错误undefined reference to?

    其它全志芯片讨论区
    xr806 xr872 faq 技术支持
    1
    1
    1525
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • q1215200171
      budbool LV 9 last edited by

      1.问题背景
      把SDK默认的Freertos切换为其他RTOS后,部分用户反馈,工程中已经定义某个函数,但是在编译最后依旧会报错undefined reference to(找不到某个函数)。

      2.问题描述
      工程编译过程中没有报错,但是在最后连接过程时会提示错误undefined reference to"",找不到特定函数。

      3.问题分析
      编译过程中没有报错,在最后连接时才报错,说明编译时引用了某个头文件,指明该函数需要用其他库实现。

      4.解决方法
      1)首先使用nm命令检查该函数所在的.a静态库,确认该静态库中是否已经包含了该函数,如果没有该函数,则检查该函数的编译是不是需要使能某些宏。

      2)如果已经确认了静态库中已经包含了该函数,说明在gcc链接过程中被忽略了,则可以尝试使用以下三种方法。

      • 把该静态库的顺序提前,如first.a中调用了second.a中的某个函数,但是编译时却报错找不到second.a的某个函数,尝试调换两个静态库的顺序。

      • 使用-Wl,–start-group和-Wl,–end-group修饰该静态库,代表该静态库不会只检索一次,而是多次来回检索,防止遗漏。缺点如果修饰的静态库太多,会导致编译速度变慢。

      • 使用-Wl,–whole-archive和-Wl,–no-whole-archive修饰静态库,代表该静态库的所有函数都不会被忽略,强制链接。缺点是如果该静态库中存在多余的函数,会浪费flash。

      1 Reply Last reply Reply Quote Share 0
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策