Other Parts Discussed in Thread: SYSBIOS,
Tool/software: Code Composer Studio
I've installed:
-
Code Composer Studio v6.2.0.00050
-
Processor SDK v 03.01.00.06 for RTOS
And I have trouble using CCS to start a basic (typical) ARM project and build it for my platform, the TCIEVMK2X evaluation module (uses the TCI6636K2H processor). These are the steps I followed:
- Right click on the "Project Explorer" tab and select "New->CCS Project"
- On the second window, selected the project template from "SYS/BIOS -> GNU Target Examples -> Typical".
- On the 3rd window, selected the platform "ti.platforms.evmTCI6636K2H", and click on "Finish".
- Clicked on the "Build Hammer" button to build the project.
The screenshots for these steps are below:
When I built, I got the following error:
**** Build of configuration Debug for project TypicalARM **** /home/phoebus/ti/ccsv6/utils/bin/gmake -k all Building file: ../app.cfg Invoking: XDCtools "/home/phoebus/ti/xdctools_3_32_01_22_core/xs" --xdcpath="/home/phoebus/ti/bios_6_45_01_29/packages;/home/phoebus/ti/ccsv6/ccs_base;" xdc.tools.configuro -o configPkg -t gnu.targets.arm.A15F -p ti.platforms.evmTCI6636K2H -r release -c "/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3" "../app.cfg" making package.mak (because of package.bld) ... generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ... configuring app.xa15fg from package/cfg/app_pa15fg.cfg ... generating custom ti.sysbios library makefile ... Starting build of library sources ... making /home/phoebus/workspace_v6_2/TypicalARM/src/sysbios/sysbios.aa15fg ... gmake[1]: Entering directory `/home/phoebus/workspace_v6_2/TypicalARM/src/sysbios' asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/IntrinsicsSupport_asm_gnu.asm ... asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/TaskSupport_asm_gnu.asm ... asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/gic/Hwi_asm_gnu.asm ... asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/exc/Exception_asm_gnu.asm ... asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Cache_asm_gnu.asm ... asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Mmu_asm_gnu.asm ... asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/TimestampProvider_asm_gnu.asm ... asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/systimer/Timer_asm_gnu.asm ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/BIOS.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/IntrinsicsSupport.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/TaskSupport.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Clock.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Idle.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Intrinsics.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Queue.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Semaphore.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Swi.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Swi_andn.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Task.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Cache.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Core.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Hwi.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Hwi_stack.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Hwi_startup.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/gic/Hwi.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/exc/Exception.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/rts/gnu/ReentSupport.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/gates/GateHwi.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/gates/GateMutex.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/heaps/HeapMem.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Core.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Cache.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Mmu.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/TimestampProvider.c ... cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/systimer/Timer.c ... ara15fg arm_IntrinsicsSupport_asm_gnu.o arm_TaskSupport_asm_gnu.o gic_Hwi_asm_gnu.o exc_Exception_asm_gnu.o a15_Cache_asm_gnu.o a15_Mmu_asm_gnu.o a15_TimestampProvider_asm_gnu.o systimer_Timer_asm_gnu.o _BIOS.o arm_IntrinsicsSupport.o arm_TaskSupport.o knl_Clock.o knl_Idle.o knl_Intrinsics.o knl_Queue.o knl_Semaphore.o knl_Swi.o knl_Swi_andn.o knl_Task.o hal_Cache.o hal_Core.o hal_Hwi.o hal_Hwi_stack.o hal_Hwi_startup.o gic_Hwi.o exc_Exception.o gnu_ReentSupport.o gates_GateHwi.o gates_GateMutex.o heaps_HeapMem.o a15_Core.o a15_Cache.o a15_Mmu.o a15_TimestampProvider.o systimer_Timer.o ... gmake[1]: Leaving directory `/home/phoebus/workspace_v6_2/TypicalARM/src/sysbios' Build of libraries done. cla15fg package/cfg/app_pa15fg.c ... Finished building: ../app.cfg making ../src/sysbios/sysbios.aa15fg ... gmake[1]: Entering directory '/home/phoebus/workspace_v6_2/TypicalARM/src/sysbios' gmake[1]: Nothing to be done for 'all'. gmake[1]: Leaving directory '/home/phoebus/workspace_v6_2/TypicalARM/src/sysbios' Building file: ../main.c Invoking: GNU Compiler "/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc" -c -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=hard -I"/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include" -g -gdwarf-3 -gstrict-dwarf -Wall -MMD -MP -MF"main.d" -MT"main.o" -o"main.o" @"configPkg/compiler.opt" "../main.c" Finished building: ../main.c Building target: TypicalARM.out Invoking: GNU Linker "/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc" -mcpu=cortex-a15 -marm -mfloat-abi=hard -g -gdwarf-3 -gstrict-dwarf -Wall -Wl,-Map,"TypicalARM.map" -nostartfiles -static -Wl,--gc-sections -L"/home/phoebus/ti/bios_6_45_01_29/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu" -o"TypicalARM.out" "./main.o" -Wl,-T"configPkg/linker.cmd" -Wl,--start-group -lgcc -lm -lnosys -lc -Wl,--end-group makefile:142: recipe for target 'TypicalARM.out' failed /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: TypicalARM.out uses VFP register arguments, /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(bpabi.o) does not /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(bpabi.o) /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: TypicalARM.out uses VFP register arguments, /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(_divdi3.o) does not /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(_divdi3.o) /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: TypicalARM.out uses VFP register arguments, /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(_udivdi3.o) does not /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(_udivdi3.o) collect2: error: ld returned 1 exit status gmake: *** [TypicalARM.out] Error 1 gmake: Target 'all' not remade because of errors. **** Build Finished ****
I don't understand why a template configuration would result in this error. The main.c file has no floating point operations, but the linker flags seem to want to link to a "fpu" directory, yet it still searches for a libgcc.a in a different directory. I did notice that there is NO libgcc.a file in the fpu directory it tried to link to:
~/ti/bios_6_45_01_29/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu$ ls crt0.o libgloss-linux.a librdpmon.a rdimon-crt0.o redboot-crt0.o iq80310.specs libm.a linux-crt0.o rdimon.specs redboot.ld libc.a libnosys.a linux.specs rdpmon-crt0.o redboot.specs libg.a librdimon.a pid.specs rdpmon.specs redboot-syscalls.o
Is there a misconfiguration in my environment somewhere, maybe due to an incompatibility between Processor SDK and CCS?
**** Build of configuration Debug for project TypicalARM ****
/home/phoebus/ti/ccsv6/utils/bin/gmake -k all
Building file: ../app.cfg
Invoking: XDCtools
"/home/phoebus/ti/xdctools_3_32_01_22_core/xs" --xdcpath="/home/phoebus/ti/bios_6_45_01_29/packages;/home/phoebus/ti/ccsv6/ccs_base;" xdc.tools.configuro -o configPkg -t gnu.targets.arm.A15F -p ti.platforms.evmTCI6636K2H -r release -c "/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3" "../app.cfg"
making package.mak (because of package.bld) ...
generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ...
configuring app.xa15fg from package/cfg/app_pa15fg.cfg ...
generating custom ti.sysbios library makefile ...
Starting build of library sources ...
making /home/phoebus/workspace_v6_2/TypicalARM/src/sysbios/sysbios.aa15fg ...
gmake[1]: Entering directory `/home/phoebus/workspace_v6_2/TypicalARM/src/sysbios'
asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/IntrinsicsSupport_asm_gnu.asm ...
asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/TaskSupport_asm_gnu.asm ...
asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/gic/Hwi_asm_gnu.asm ...
asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/exc/Exception_asm_gnu.asm ...
asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Cache_asm_gnu.asm ...
asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Mmu_asm_gnu.asm ...
asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/TimestampProvider_asm_gnu.asm ...
asma15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/systimer/Timer_asm_gnu.asm ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/BIOS.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/IntrinsicsSupport.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/TaskSupport.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Clock.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Idle.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Intrinsics.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Queue.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Semaphore.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Swi.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Swi_andn.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/knl/Task.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Cache.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Core.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Hwi.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Hwi_stack.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/hal/Hwi_startup.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/gic/Hwi.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/exc/Exception.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/rts/gnu/ReentSupport.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/gates/GateHwi.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/gates/GateMutex.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/heaps/HeapMem.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Core.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Cache.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/Mmu.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/a15/TimestampProvider.c ...
cla15fg /home/phoebus/ti/bios_6_45_01_29/packages/ti/sysbios/family/arm/systimer/Timer.c ...
ara15fg arm_IntrinsicsSupport_asm_gnu.o arm_TaskSupport_asm_gnu.o gic_Hwi_asm_gnu.o exc_Exception_asm_gnu.o a15_Cache_asm_gnu.o a15_Mmu_asm_gnu.o a15_TimestampProvider_asm_gnu.o systimer_Timer_asm_gnu.o _BIOS.o arm_IntrinsicsSupport.o arm_TaskSupport.o knl_Clock.o knl_Idle.o knl_Intrinsics.o knl_Queue.o knl_Semaphore.o knl_Swi.o knl_Swi_andn.o knl_Task.o hal_Cache.o hal_Core.o hal_Hwi.o hal_Hwi_stack.o hal_Hwi_startup.o gic_Hwi.o exc_Exception.o gnu_ReentSupport.o gates_GateHwi.o gates_GateMutex.o heaps_HeapMem.o a15_Core.o a15_Cache.o a15_Mmu.o a15_TimestampProvider.o systimer_Timer.o ...
gmake[1]: Leaving directory `/home/phoebus/workspace_v6_2/TypicalARM/src/sysbios'
Build of libraries done.
cla15fg package/cfg/app_pa15fg.c ...
Finished building: ../app.cfg
making ../src/sysbios/sysbios.aa15fg ...
gmake[1]: Entering directory '/home/phoebus/workspace_v6_2/TypicalARM/src/sysbios'
gmake[1]: Nothing to be done for 'all'.
gmake[1]: Leaving directory '/home/phoebus/workspace_v6_2/TypicalARM/src/sysbios'
Building file: ../main.c
Invoking: GNU Compiler
"/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc" -c -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=hard -I"/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include" -g -gdwarf-3 -gstrict-dwarf -Wall -MMD -MP -MF"main.d" -MT"main.o" -o"main.o" @"configPkg/compiler.opt" "../main.c"
Finished building: ../main.c
Building target: TypicalARM.out
Invoking: GNU Linker
"/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc" -mcpu=cortex-a15 -marm -mfloat-abi=hard -g -gdwarf-3 -gstrict-dwarf -Wall -Wl,-Map,"TypicalARM.map" -nostartfiles -static -Wl,--gc-sections -L"/home/phoebus/ti/bios_6_45_01_29/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu" -o"TypicalARM.out" "./main.o" -Wl,-T"configPkg/linker.cmd" -Wl,--start-group -lgcc -lm -lnosys -lc -Wl,--end-group
makefile:142: recipe for target 'TypicalARM.out' failed
/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: TypicalARM.out uses VFP register arguments, /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(bpabi.o) does not
/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(bpabi.o)
/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: TypicalARM.out uses VFP register arguments, /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(_divdi3.o) does not
/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(_divdi3.o)
/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: TypicalARM.out uses VFP register arguments, /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(_udivdi3.o) does not
/home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/phoebus/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/libgcc.a(_udivdi3.o)
collect2: error: ld returned 1 exit status
gmake: *** [TypicalARM.out] Error 1
gmake: Target 'all' not remade because of errors.
**** Build Finished ****