1

많은 외부 라이브러리가있는 프로젝트를 컴파일 중입니다. 이 프로젝트에는 몇 가지 경고가 있지만 .hex 파일의 생성을 방해해서는 안된다고 생각합니다. 그래서 프로젝트를 컴파일 할 때 링크 오류 목록을 얻습니다.Openpicus 용 마이크로 칩 C30 컴파일러를 사용하여 컴파일 할 때 연결 오류

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에서 지원되며이 또한 선언했습니다. 프로그램이 올바르게 컴파일되지만 연결 오류가 발생한다는 것은 놀라운 일입니다. 이것에 대한 어떤 생각? 미리

답변

0

덕분에 이러한 strdup' undefined reference to object_read에 정의 참조 'object_execute' undefined reference to object_write에 정의 기준 "object_create' undefined reference to object_write에 정의 기준"object_create' undefined reference to object_isInstanceNew에 정의 기준'에 코드 정의 기준에서 에러입니다 object_delete' undefined reference to prv_getRegisterPayload ' PS 이것들은 경고가 아니다 !!

"strdup", ..., "prv_getRegisterPayload"함수의 정의가 없음을 나타내는 오류입니다. 링커는 이러한 루틴에 대한 참조를 찾지 못하며 링크 시간 오류로 종료합니다. 링크가 없다는 것은 모든 툴 체인의 표준 동작 인 16 진수 파일이 생성되지 않았 음을 의미합니다.

프로젝트에 첨부 된 라이브러리를 확인하십시오. 이러한 루틴에 대한 참조/정의가있는 라이브러리를 추가하면 코드가 올바르게 빌드되어야합니다. 유사한 오류가 발생합니다

의사 코드는 다음과 같은 :

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

- 함수 포물선의 정의인가? 그럴 필요가 없습니다.

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