AnsweredAssumed Answered

KSDK Linker Error - Command line too long

Question asked by LARRY KOOS on Nov 5, 2014
Latest reply on Feb 9, 2016 by Dominik Neudert-Schulz

I'm using KDS 1.1.1 with MQX_KSDK 1.0.0. I've built a project with Processor Expert targeting a K64 part. After using the project successfully for several weeks, I have reached a point where I get a linker error such as:

 

arm-none-eabi-g++: error: C:/Freescale/KDS_1.1.1/eclipse//../toolchain/arm-none-eabi/lib/m4fp/v4-sp-d16/libm.a: No such file or directory

 

Through experimentation, I have determined this error is caused by a linker command line that exceeds a maximum threshold. Here is an example of the command line auto-generated by the tool:

 

arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections  -g3 -T "C:/Users/Larry/git/asr_v1/asr_v1/Project_Settings/Linker_Files/ProcessorExpert.ld" -Xlinker --gc-sections -L"C:/Users/Larry/git/asr_v1/asr_v1/Project_Settings/Linker_Files" -L"C:\Users\Larry\workspace.kds\xbee\Debug" -Wl,-Map,"asr_v1.map" -nostartfiles -nodefaultlibs -nostdlib -Xlinker -z -Xlinker muldefs -Xlinker -static -o "asr_v1.elf"  ./Static_Code/System/PE_low_level_init.o  ./Sources/xbee/xbee_platform_posix.o ./Sources/xbee/xbee_serial_mqx.o  ./Sources/Events.o ./Sources/asrMessaging.o ./Sources/main.o ./Sources/mqx_tasks.o ./Sources/telit.o ./Sources/uart_handler.o  ./SDK/rtos/mqx/mqx_stdlib/source/strings/strings.o  ./SDK/rtos/mqx/mqx_stdlib/source/stdio/buf_prv.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/err.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/fclose.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/fflush.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/fopen.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/fp_prv.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/fread.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/fwrite.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/get.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/pos.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/print.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/print_prv.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/put.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/scan.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/scan_prv.o ./SDK/rtos/mqx/mqx_stdlib/source/stdio/stdio.o  ./SDK/rtos/mqx/mqx/source/string/str_utos.o ./SDK/rtos/mqx/mqx/source/string/strnlen.o ./SDK/rtos/mqx/mqx/source/string/unicode.o  ./SDK/rtos/mqx/mqx/source/psp/cortex_m/core/M4/boot.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/core/M4/dispatch.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/core/M4/support.o  ./SDK/rtos/mqx/mqx/source/psp/cortex_m/compiler/gcc_arm/comp.o  ./SDK/rtos/mqx/mqx/source/psp/cortex_m/cortex.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/int_gkis.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/int_inst.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/int_kisr.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/int_pvta.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/int_unx.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/int_vtab.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/int_xcpt.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/ipsum.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/mem_copy.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/mem_zero.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/nvic.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_dati.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_gelms.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_hoti.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_iinit.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_mat1.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_mat2.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_mat3.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_miti.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_msti.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_mstiq.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_nsti.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_psti.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_seti.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_supp.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tiad.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tida.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tihr.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_timn.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tims.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tinm.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tins.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tiol.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tipr.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tips.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tise.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tisu.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tius.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_tkti.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/psp_usti.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/sc_irdyq.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/stack_bu.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/stack_de.o ./SDK/rtos/mqx/mqx/source/psp/cortex_m/stack_st.o  ./SDK/rtos/mqx/mqx/source/nio/src/errno.o ./SDK/rtos/mqx/mqx/source/nio/src/nio.o  ./SDK/rtos/mqx/mqx/source/nio/fs/fs_supp.o  ./SDK/rtos/mqx/mqx/source/nio/drivers/nio_tty/src/nio_tty.o  ./SDK/rtos/mqx/mqx/source/nio/drivers/nio_tfs/src/nio_tfs.o  ./SDK/rtos/mqx/mqx/source/nio/drivers/nio_serial/src/nio_serial.o  ./SDK/rtos/mqx/mqx/source/nio/drivers/nio_pipe/src/nio_pipe.o  ./SDK/rtos/mqx/mqx/source/nio/drivers/nio_null/src/nio_null.o  ./SDK/rtos/mqx/mqx/source/nio/drivers/nio_mem/src/nio_mem.o  ./SDK/rtos/mqx/mqx/source/nio/drivers/nio_dummy/src/nio_dummy.o  ./SDK/rtos/mqx/mqx/source/kernel/event.o ./SDK/rtos/mqx/mqx/source/kernel/idletask.o ./SDK/rtos/mqx/mqx/source/kernel/inittask.o ./SDK/rtos/mqx/mqx/source/kernel/int.o ./SDK/rtos/mqx/mqx/source/kernel/klog.o ./SDK/rtos/mqx/mqx/source/kernel/log.o ./SDK/rtos/mqx/mqx/source/kernel/lwevent.o ./SDK/rtos/mqx/mqx/source/kernel/lwlog.o ./SDK/rtos/mqx/mqx/source/kernel/lwmem.o ./SDK/rtos/mqx/mqx/source/kernel/lwmsgq.o ./SDK/rtos/mqx/mqx/source/kernel/lwsem.o ./SDK/rtos/mqx/mqx/source/kernel/lwtimer.o ./SDK/rtos/mqx/mqx/source/kernel/mem.o ./SDK/rtos/mqx/mqx/source/kernel/mqx.o ./SDK/rtos/mqx/mqx/source/kernel/msg.o ./SDK/rtos/mqx/mqx/source/kernel/msgpool.o ./SDK/rtos/mqx/mqx/source/kernel/msgq.o ./SDK/rtos/mqx/mqx/source/kernel/mutex.o ./SDK/rtos/mqx/mqx/source/kernel/name.o ./SDK/rtos/mqx/mqx/source/kernel/partition.o ./SDK/rtos/mqx/mqx/source/kernel/queue.o ./SDK/rtos/mqx/mqx/source/kernel/sched.o ./SDK/rtos/mqx/mqx/source/kernel/sem.o ./SDK/rtos/mqx/mqx/source/kernel/task.o ./SDK/rtos/mqx/mqx/source/kernel/taskq.o ./SDK/rtos/mqx/mqx/source/kernel/time.o ./SDK/rtos/mqx/mqx/source/kernel/timer.o ./SDK/rtos/mqx/mqx/source/kernel/watchdog.o  ./SDK/rtos/mqx/mqx/source/bsp/K64F12/vectors.o  ./SDK/rtos/mqx/mqx/source/bsp/init_bsp.o ./SDK/rtos/mqx/mqx/source/bsp/init_hardware.o ./SDK/rtos/mqx/mqx/source/bsp/init_nio_serial.o ./SDK/rtos/mqx/mqx/source/bsp/mqx_init.o  ./SDK/rtos/mqx/config/app_mqx.o  ./SDK/platform/utilities/src/fsl_misc_utilities.o  ./SDK/platform/system/interrupt/src/fsl_interrupt_manager.o  ./SDK/platform/system/hwtimer/src/fsl_hwtimer.o ./SDK/platform/system/hwtimer/src/fsl_hwtimer_systick.o  ./SDK/platform/system/clock/MK64F12/fsl_clock_K64F12.o  ./SDK/platform/system/clock/fsl_clock_manager.o  ./SDK/platform/startup/MK64F12/system_MK64F12.o  ./SDK/platform/osa/src/fsl_os_abstraction_mqx.o  ./SDK/platform/hal/uart/fsl_uart_hal.o  ./SDK/platform/hal/sim/MK64F12/fsl_sim_hal_K64F12.o  ./SDK/platform/hal/sim/fsl_sim_hal.o  ./SDK/platform/hal/sdhc/fsl_sdhc_hal.o  ./SDK/platform/hal/port/fsl_port_hal.o  ./SDK/platform/hal/osc/fsl_osc_hal.o  ./SDK/platform/hal/mpu/fsl_mpu_hal.o  ./SDK/platform/hal/mcg/fsl_mcg_hal.o ./SDK/platform/hal/mcg/fsl_mcg_hal_modes.o  ./SDK/platform/hal/lptmr/fsl_lptmr_hal.o  ./SDK/platform/hal/gpio/fsl_gpio_hal.o  ./SDK/platform/drivers/uart/src/fsl_uart_driver.o  ./SDK/platform/drivers/uart/common/fsl_uart_common.o  ./SDK/platform/drivers/uart/fsl_uart_irq.o  ./SDK/platform/drivers/sdhc/src/fsl_sdhc_driver.o  ./SDK/platform/drivers/sdhc/common/fsl_sdhc_common.o  ./SDK/platform/drivers/sdhc/fsl_sdhc_irq.o  ./SDK/platform/drivers/mpu/src/fsl_mpu_driver.o  ./SDK/platform/drivers/mpu/common/fsl_mpu_common.o  ./SDK/platform/drivers/gpio/src/fsl_gpio_driver.o  ./SDK/platform/drivers/gpio/common/fsl_gpio_common.o  ./SDK/platform/drivers/gpio/fsl_gpio_irq.o  ./Generated_Code/Cpu.o ./Generated_Code/fsl_hwtimer1.o ./Generated_Code/fsl_mpu1.o ./Generated_Code/fsl_uart1.o ./Generated_Code/gpio_pins.o ./Generated_Code/hardware_init.o ./Generated_Code/mqx_ksdk.o ./Generated_Code/pin_init.o ./Generated_Code/sdCard1.o ./Generated_Code/uartCom0.o ./Generated_Code/uartCom3.o  C:/Freescale/KDS_1.1.1/eclipse//../toolchain/lib/gcc/arm-none-eabi/4.8.0/m4/fp/v4-sp-d16/libgcc.a C:/Freescale/KDS_1.1.1/eclipse//../toolchain/arm-none-eabi/lib/m4/fp/v4-sp-d16/libc.a C:/Freescale/KDS_1.1.1/eclipse//../toolchain/arm-none-eabi/lib/m4/fp/v4-sp-d16/libsupc++.a C:/Freescale/KDS_1.1.1/eclipse//../toolchain/arm-none-eabi/lib/m4/fp/v4-sp-d16/libm.a -lxbee

 

 

Clearly, the right way to fix this is to make a library of MQX and link in the library to the application, but I can't figure out how to do this without breaking the Processor Expert environment. Can anyone tell me the correct process?

 

Thanks.

Outcomes