gpt4 book ai didi

c - 使用 Openpicus 的 Microchip C30 编译器编译时出现链接错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:49 25 4
gpt4 key购买 nike

我正在编译一个包含大量外部库的项目。该项目有一些警告,但我相信它不应该妨碍 .hex 文件的创建。所以当我编译项目时,我得到了一个链接错误列表。

Compiling C:\liblwm2m\Libs\ExternalLib\heap.s

* Total program memory used (bytes): 0x28ef3 (167667) 64%

* Total data memory used (bytes): 0x360a (13834) 84%
x_object_device.o(.text+0x688):C:\liblwm2m\Libs\ExternalLib\object_device.c: undefined reference to `strdup'
x_object_device.o(.text+0x68a):C:\liblwm2m\Libs\ExternalLib\object_device.c: undefined reference to `strdup'
x_object_device.o(.text+0x6b6):C:\liblwm2m\Libs\ExternalLib\object_device.c: undefined reference to `strdup'
x_object_device.o(.text+0x6b8):C:\liblwm2m\Libs\ExternalLib\object_device.c: undefined reference to `strdup'
x_object_device.o(.text+0x6e4):C:\liblwm2m\Libs\ExternalLib\object_device.c: undefined reference to `strdup'
x_object_device.o(.text+0x6e6):C:\liblwm2m\Libs\ExternalLib\object_device.c: more undefined references to `strdup' follow
x_observe.o(.text+0x3c2):C:\liblwm2m\Libs\ExternalLib\observe.c: undefined reference to `object_read'
x_observe.o(.text+0x3c4):C:\liblwm2m\Libs\ExternalLib\observe.c: undefined reference to `object_read'
x_liblwm2m.o(.text+0x86):C:\liblwm2m\Libs\ExternalLib\liblwm2m.c: undefined reference to `strdup'
x_liblwm2m.o(.text+0x88):C:\liblwm2m\Libs\ExternalLib\liblwm2m.c: undefined reference to `strdup'
x_management.o(.text+0x48):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_read'
x_management.o(.text+0x4a):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_read'
x_management.o(.text+0xa6):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_create'
x_management.o(.text+0xa8):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_create'
x_management.o(.text+0x154):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_isInstanceNew'
x_management.o(.text+0x156):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_isInstanceNew'
x_management.o(.text+0x16e):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_create'
x_management.o(.text+0x170):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_create'
x_management.o(.text+0x188):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_write'
x_management.o(.text+0x18a):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_write'
x_management.o(.text+0x1a2):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_execute'
x_management.o(.text+0x1a4):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_execute'
x_management.o(.text+0x1da):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_write'
x_management.o(.text+0x1dc):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_write'
x_management.o(.text+0x208):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_delete'
x_management.o(.text+0x20a):C:\liblwm2m\Libs\ExternalLib\management.c: undefined reference to `object_delete'
x_registration.o(.text+0x8c):C:\liblwm2m\Libs\ExternalLib\registration.c: undefined reference to `prv_getRegisterPayload'
x_registration.o(.text+0x8e):C:\liblwm2m\Libs\ExternalLib\registration.c: undefined reference to `prv_getRegisterPayload'
C:\Program Files\Microchip\MPLAB C30\bin\bin/pic30-coff-bin2hex.exe: a.cof could not be opened.
The system cannot find the file specified.
---------------------------------- COMPILING ERROR ---------------------------------------

这里的strdup函数是openpicus支持的,我也声明了。令我惊讶的是程序编译正确但抛出链接错误。对此有什么想法吗?

提前致谢

最佳答案

这些是代码中的错误对 strdup' 的 undefined reference
object_read 的 undefined reference 对 object_create' 的 undefined reference
undefined reference
object_isInstanceNew'对 object_create' 的 undefined reference
object_write' 的 undefined reference 对 object_execute' 的 undefined reference
object_write' 的 undefined reference 对 object_delete' 的 undefined reference
undefined reference
prv_getRegisterPayload'附言这些不是警告!!

错误表明没有函数“strdup”、...、“prv_getRegisterPayload”的定义。链接器找不到对这些例程的引用,并因链接时间错误而终止。没有链接意味着没有生成 hex 文件,这是所有工具链的标准行为。

检查您附加到项目的库。添加具有这些例程的引用/定义的库,然后代码应该可以正常构建。

会产生类似错误的伪代码如下:

extern void parabola ();
int main(void)
{
parabola (); // ERROR here "undefined reference to `parabola'
}

-- 抛物线函数的定义在哪里?不应该吗

void parabola ()
{}
int main(void)
{
parabola (); // Builds like magic
}

关于c - 使用 Openpicus 的 Microchip C30 编译器编译时出现链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com