Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
9 years, 9 months ago.
linking nsdl lib failed with unsolved symbol
Hi, I try to link nsdl lib in my offline development environment. It fails with errors like:
error
nanoservice_client_1_12\sn_grs.c:(.text+0x46c): undefined reference to `__aeabi_memclr4'
here is my building command (unrelated object file removed):
building command
C:/smeshstudio/smeshcore/tools/gcc_arm/bin/arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main -Wl,-Map=NSDL_HelloWorld.map,--cref -T./mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/LPC1768.ld -L./mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM -L./nsdl_lib -o NSDL_HelloWorld.elf mbed-rtos/rtx/TARGET_M3/TOOLCHAIN_GCC/SVC_Table.o mbed-rtos/rtx/TARGET_M3/TOOLCHAIN_GCC/HAL_CM3.o ... mbed-rtos/rtos/Semaphore.o mbed-rtos/rtos/Mutex.o mbed-rtos/rtos/RtosTimer.o mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/retarget.o mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/system_LPC17xx.o mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/board.o mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/cmsis_nvic.o mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/startup_LPC17xx.o -lmbed -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys -lnsdl -lmbed -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys -lnsdl
Here are errors with more details from linker:
errors with details
arm-none-eabi/bin/ld.exe: warning: ./nsdl_lib\libnsdl.a(sn_coap_builder.o) uses 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of wchar_t values across objects may fail arm-none-eabi/bin/ld.exe: warning: ./nsdl_lib\libnsdl.a(sn_coap_header_check.o) uses 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of wchar_t values across objects may fail arm-none-eabi/bin/ld.exe: warning: ./nsdl_lib\libnsdl.a(sn_coap_parser.o) uses 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of wchar_t values across objects may fail arm-none-eabi/bin/ld.exe: warning: ./nsdl_lib\libnsdl.a(sn_nsdl.o) uses 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of wchar_t values across objects may fail arm-none-eabi/bin/ld.exe: warning: ./nsdl_lib\libnsdl.a(sn_coap_protocol.o) uses 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of wchar_t values across objects may fail arm-none-eabi/bin/ld.exe: warning: ./nsdl_lib\libnsdl.a(sn_grs.o) uses 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of wchar_t values across objects may fail arm-none-eabi/bin/ld.exe: warning: ./nsdl_lib\libnsdl.a(sn_linked_list.o) uses 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of wchar_t values across objects may fail ./nsdl_lib\libnsdl.a(sn_coap_builder.o): In function `sn_coap_build_response': nanoservice_client_1_12\sn_coap_builder.c:(.text+0x2a): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_coap_builder.c:(.text+0x7c): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_builder.o): In function `sn_coap_builder_payload_build': nanoservice_client_1_12\sn_coap_builder.c:(.text+0xa2): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_builder.o): In function `sn_coap_builder_options_build_add_one_option': nanoservice_client_1_12\sn_coap_builder.c:(.text+0x1aa): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_builder.o): In function `sn_coap_builder_options_build': nanoservice_client_1_12\sn_coap_builder.c:(.text+0x366): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_builder.o): In function `sn_coap_builder': nanoservice_client_1_12\sn_coap_builder.c:(.text+0xaba): undefined reference to `__aeabi_memclr' ./nsdl_lib\libnsdl.a(sn_coap_parser.o): In function `sn_coap_parser_options_parse_multiple_options': nanoservice_client_1_12\sn_coap_parser.c:(.text+0x2a0): undefined reference to `__aeabi_memset' nanoservice_client_1_12\sn_coap_parser.c:(.text+0x2b4): undefined reference to `__aeabi_memset' nanoservice_client_1_12\sn_coap_parser.c:(.text+0x2e6): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_parser.o): In function `sn_coap_parser_options_parse': nanoservice_client_1_12\sn_coap_parser.c:(.text+0x3a8): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_parser.c:(.text+0x4e0): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_coap_parser.c:(.text+0x558): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_parser.c:(.text+0x5a4): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_parser.c:(.text+0x5fc): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_parser.c:(.text+0x686): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_parser.c:(.text+0x716): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_parser.o):nanoservice_client_1_12\sn_coap_parser.c:(.text+0x7e2): more undefined references to `__aeabi_memcpy' follow ./nsdl_lib\libnsdl.a(sn_coap_parser.o): In function `sn_coap_parser': nanoservice_client_1_12\sn_coap_parser.c:(.text+0x9b2): undefined reference to `__aeabi_memclr4' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_resolve_ep_information': nanoservice_client_1_12\sn_nsdl.c:(.text+0x234): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0x2a8): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0x2fc): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_init': nanoservice_client_1_12\sn_nsdl.c:(.text+0x4fa): undefined reference to `__aeabi_memclr4' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_GET_with_QUERY': nanoservice_client_1_12\sn_nsdl.c:(.text+0x55a): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0x588): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0x5d2): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_GET': nanoservice_client_1_12\sn_nsdl.c:(.text+0x630): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0x65e): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0x6a4): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_build_registration_body': nanoservice_client_1_12\sn_nsdl.c:(.text+0x942): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0x964): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0x978): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0x99c): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_nsdl.o):nanoservice_client_1_12\sn_nsdl.c:(.text+0x9b0): more undefined references to `__aeabi_memcpy' follow ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_register_endpoint': nanoservice_client_1_12\sn_nsdl.c:(.text+0xb88): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0xbb6): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0xcb2): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0xd4e): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_unregister_endpoint': nanoservice_client_1_12\sn_nsdl.c:(.text+0xd88): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0xde4): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0xe04): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_update_registration': nanoservice_client_1_12\sn_nsdl.c:(.text+0xe38): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0xe72): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0xe96): undefined reference to `__aeabi_memclr4' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_send_eventing_message': nanoservice_client_1_12\sn_nsdl.c:(.text+0xeee): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0xf20): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0xf2c): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `sn_nsdl_send_observation_notification': nanoservice_client_1_12\sn_nsdl.c:(.text+0xf7e): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_nsdl.c:(.text+0xfa2): undefined reference to `__aeabi_memclr4' ./nsdl_lib\libnsdl.a(sn_nsdl.o): In function `set_NSP_address': nanoservice_client_1_12\sn_nsdl.c:(.text+0x1132): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_nsdl.c:(.text+0x118e): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_protocol.o): In function `sn_coap_register': nanoservice_client_1_12\sn_coap_protocol.c:(.text+0x44): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_protocol.c:(.text+0x70): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_coap_protocol.c:(.text+0xc8): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_protocol.c:(.text+0xdc): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_protocol.c:(.text+0xe8): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_protocol.o): In function `sn_coap_protocol_allocate_mem_for_msg': nanoservice_client_1_12\sn_coap_protocol.c:(.text+0x4de): undefined reference to `__aeabi_memclr' ./nsdl_lib\libnsdl.a(sn_coap_protocol.o): In function `sn_coap_protocol_linked_list_send_msg_store': nanoservice_client_1_12\sn_coap_protocol.c:(.text+0x5ae): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_protocol.c:(.text+0x5cc): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_protocol.o): In function `sn_coap_protocol_linked_list_ack_info_store': nanoservice_client_1_12\sn_coap_protocol.c:(.text+0xa1c): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_coap_protocol.c:(.text+0xa2c): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_protocol.o): In function `sn_coap_protocol_build_msg': nanoservice_client_1_12\sn_coap_protocol.c:(.text+0xc1c): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_coap_protocol.o):nanoservice_client_1_12\sn_coap_protocol.c:(.text+0xc62): more undefined references to `__aeabi_memcpy' follow ./nsdl_lib\libnsdl.a(sn_grs.o): In function `sn_grs_list_resource': nanoservice_client_1_12\sn_grs.c:(.text+0x1e6): undefined reference to `__aeabi_memmove' ./nsdl_lib\libnsdl.a(sn_grs.o): In function `sn_grs_update_resource': nanoservice_client_1_12\sn_grs.c:(.text+0x42c): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_grs.o): In function `sn_grs_add_resource_to_list': nanoservice_client_1_12\sn_grs.c:(.text+0x46c): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_grs.c:(.text+0x4b8): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_grs.c:(.text+0x4e4): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_grs.c:(.text+0x50e): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_grs.c:(.text+0x566): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_grs.c:(.text+0x59e): undefined reference to `__aeabi_memcpy' ./nsdl_lib\libnsdl.a(sn_grs.o): In function `sn_grs_process_coap': nanoservice_client_1_12\sn_grs.c:(.text+0x78c): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_grs.c:(.text+0x92c): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_grs.c:(.text+0x986): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_grs.c:(.text+0x9f0): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_grs.c:(.text+0xa24): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_grs.c:(.text+0xa5c): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_grs.c:(.text+0xaf2): undefined reference to `__aeabi_memclr4' nanoservice_client_1_12\sn_grs.c:(.text+0xb6e): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_grs.c:(.text+0xbd0): undefined reference to `__aeabi_memcpy' nanoservice_client_1_12\sn_grs.c:(.text+0xc26): undefined reference to `__aeabi_memcpy' arm-none-eabi/bin/ld.exe: NSDL_HelloWorld.elf: hidden symbol `__aeabi_memset' isn't defined arm-none-eabi/bin/ld.exe: final link failed: Bad value collect2.exe: error: ld returned 1 exit status
Could you help me find what is wrong here?
Thanks!
Question relating to:
1 Answer
9 years, 9 months ago.
It turns out that the online IDE probably use armcc toolchain, which has optimized version for memcpy, memmove and memclr etcs.(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3934.html) But they are not available in arm-gcc 4.8. It can be solved by updating to latest newlib (https://sourceware.org/newlib/), which contains such symbols (aeabi_memcpy, aeabi_memmove etc.) or implementing these functions by ourselves.
Assigned to
9 years, 9 months ago.This means that the question has been accepted and is being worked on.
moved to answer.
posted by zhongwei yao 26 Feb 2015