NXP MCU 技术william hill官网
直播中

张国厚

7年用户 1362经验值
私信 关注
[问答]

lpcxpresso55s16 zephyr未定义对“__aeabi_d2iz”的引用怎么解决?

我正在使用带 zephyr 堆栈的 lpcxpresso55s16 Eval Board,我刚刚创建了一个调用一个函数的线程,在该函数中我正在根据结果执行一些浮点计算我在尝试编译时递增静态变量它正在编译但在链接器阶段,它会抛出错误,如对 `__aeabi_d2iz' 的未定义引用,我正在努力解决此问题
细节 :
主板:lpcxpresso55s16
堆栈:和风 3.3.99
//File Name : abc.c
#include
#include
static struct k_thread handler_thread_data;

K_THREAD_STACK_DEFINE(handler_thread_stack,0X400);

void create_thread()
{

task_tid = k_thread_create(&handler_thread_data,handler_thread_stack,K_THREAD_STACK_SIZEOF(handler_thread_stack),handler_thread,NULL,NULL,NULL,2,0,K_FOREVER);
if(!task_tid)
{
return task_init_failed;
}
k_thread_name_set(task_tid,"data_task");
initialized = true;
}

void handler_thread(void *arg1,void *arg2, void *arg3)
{

for(;;)
{

    calc();
            k_msleep(50);
    }
}


//Filename : def.c
#include
static double c=8.725;
static uint16_t inc=0;
void calc()
{
   
    double a;
    long b;
    a=10.5;
    b= (long)(a * c);  // compiler pointing this line and says undefined reference to `__aeabi_d2iz'

    if (b > 40)
    {
          inc++;
    }
    if(inc>1000)
    {
        inc=0;
    }
}


回帖(1)

china

2023-9-22 10:02:49
这个错误提示是指链接器无法找到名为"__aeabi_d2iz"的符号,该符号是一个浮点数转换为整数的内部函数。通常情况下,这个函数应该是由编译器或标准库提供,并且会自动链接。但是,在某些情况下,由于一些不正确的配置或设置,链接器可能无法找到这个函数。

有几个可能的解决方案:

1. 确认你的代码是否需要使用浮点计算,如果可以避免使用浮点数,尽量使用整数计算,避免使用浮点计算。

2. 确认你的编译器和标准库是否正确配置,如果在编译时使用了编译选项或标准库的不同设置,可能导致无法找到该函数。尝试使用默认设置或参考相关文档进行配置。

3. 确认你使用的是正确的库和头文件,在一些情况下,链接器可能无法找到正确的库或头文件,导致无法找到函数。确保使用正确的库和头文件,并在编译时正确设置链接选项。

如果以上方法不起作用,建议检查你的代码、编译器和标准库的配置,以及相关文档和网上资料以寻找更多解决方案。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分