Forums | developer.brewmp.com Forums | developer.brewmp.com

Developer

Forums

I am a newbie to RVCT for BREW 1.2 and would appreciate any help you can give me. My friend is able to compile his code using ARM ADS 1.0.1. I took his code and I modified his makefile by changing the ARMBIN, ARMINC, and ARMLIB to point to my brand new installation of RVCT for BREW 1.2. RVCT successfully created all the object files but during armlink linking stage, it fails with the below errors:

Error: L6218E: Undefined symbol __rt_memcpy_w (referred from wet.o).
Error: L6218E: Undefined symbol __rt_sdiv (referred from Wets.o).
Error: L6218E: Undefined symbol __rt_memclr_w (referred from Wets.o).
Error: L6218E: Undefined symbol __rt_memcpy (referred from alSettings.o).
Error: L6218E: Undefined symbol __rt_sdiv10 (referred from alSettings.o).
Error: L6218E: Undefined symbol _fflt (referred from smartLabel.o).
Error: L6218E: Undefined symbol _fcmpeq (referred from smartLabel.o).
Error: L6218E: Undefined symbol __rt_udiv (referred from smartLabel.o).
Error: L6218E: Undefined symbol __rt_divtest (referred from yWidget.o).
Not enough information to list the image map.
Finished: 1 information, 1 warning and 9 error messages.
NMAKE : fatal error U1077: 'C:\ARM\RVCT_BREWv1_2\Bin\armlink.exe' : return code
'0x1'
Stop.

Being a newbie to ARM compilation, I am unable to troubleshoot this. To the experts out there, please give some advice.

I would like to add that all the .o files are my files.

I would like to add that all the .o files are my files.

Looks like you are using CRT functions like "memcpy", floating point divisions etc. If you need to use CRT function, use BREW CRT equivalent function like MEMCPY etc. There is no native floating point support in ARM. Either you have to use BREW helper function for that or use fixed point math.

Looks like you are using CRT functions like "memcpy", floating point divisions etc. If you need to use CRT function, use BREW CRT equivalent function like MEMCPY etc. There is no native floating point support in ARM. Either you have to use BREW helper function for that or use fixed point math.

Thank you for your reply, ruben. But I have done a search in all my .c files and verified that I am using MEMCPY instead of memcpy.

Thank you for your reply, ruben. But I have done a search in all my .c files and verified that I am using MEMCPY instead of memcpy.

I am suspecting my AEEStdLib.h and other AEE .h files are outdated. Hopefully compilation will work after I replace them with updated ones.

I am suspecting my AEEStdLib.h and other AEE .h files are outdated. Hopefully compilation will work after I replace them with updated ones.

I was wrong. I am still getting the exact same errors.

I was wrong. I am still getting the exact same errors.

Try downloading the BREW Add-ins for Visual Studio and using the automated makefile generator. If this code compiles on your friend's machine, it's possible that there's a makefile problem.

Try downloading the BREW Add-ins for Visual Studio and using the automated makefile generator. If this code compiles on your friend's machine, it's possible that there's a makefile problem.

Hello Mohlendo, actually I have already tried the BREW Add-ins for VC++. My friend said the automaticly generated makefile won't work and only his make file would work.
Any further suggestion?

Hello Mohlendo, actually I have already tried the BREW Add-ins for VC++. My friend said the automaticly generated makefile won't work and only his make file would work.
Any further suggestion?

Then I'd suspect your friend's code is faulty. As Ruben suggested, look for any calls to C standard libraries.

Then I'd suspect your friend's code is faulty. As Ruben suggested, look for any calls to C standard libraries.

coolbrew wrote:Hello Mohlendo, actually I have already tried the BREW Add-ins for VC++. My friend said the automaticly generated makefile won't work and only his make file would work.
Any further suggestion?
Additionally, in the SDK see the sample make file, based on that you can write your own make file by hand. It is not that difficult. Use linker -verbose option to get more info.

coolbrew wrote:Hello Mohlendo, actually I have already tried the BREW Add-ins for VC++. My friend said the automaticly generated makefile won't work and only his make file would work.
Any further suggestion?
Additionally, in the SDK see the sample make file, based on that you can write your own make file by hand. It is not that difficult. Use linker -verbose option to get more info.

Thanks for the help. But it looks like my AEEModGen.c (newer version) is different from his. I will talk to my friend to verify.

Thanks for the help. But it looks like my AEEModGen.c (newer version) is different from his. I will talk to my friend to verify.

My friend and I have the same version of AEEModGen.c and AEEAppGen.c.

My friend and I have the same version of AEEModGen.c and AEEAppGen.c.

If you are writing C++ code then be sure to overload new/delete operators, otherwise check your code to confirm with BREW guidelines

If you are writing C++ code then be sure to overload new/delete operators, otherwise check your code to confirm with BREW guidelines

Contrary to what I said before, my friend actually has the same version of RVCT for BREW compiler. I was mistaken at first because his makefile mentioned a older version of the ARM ADS.
I guess this only adds to the mystery because I am compiling the same C++ source code as him.

Contrary to what I said before, my friend actually has the same version of RVCT for BREW compiler. I was mistaken at first because his makefile mentioned a older version of the ARM ADS.
I guess this only adds to the mystery because I am compiling the same C++ source code as him.

It is now working. My makefile was incorrect.
Incorrect:
ARMLIB = C:\ARM\RVCT_BREWv1_2\Lib\armlib
Correct:
ARMLIB = C:\ARM\RVCT_BREWv1_2\Lib
=)

It is now working. My makefile was incorrect.
Incorrect:
ARMLIB = C:\ARM\RVCT_BREWv1_2\Lib\armlib
Correct:
ARMLIB = C:\ARM\RVCT_BREWv1_2\Lib
=)

I'm compiling an app with get the following error during the link phase:
Error: L6218E: Undefined symbol __rt_udiv (referred from Lara.o).
Error: L6218E: Undefined symbol __rt_sdiv (referred from Level.o).
Error: L6218E: Undefined symbol __rt_sdiv10 (referred from Level.o).
Error: L6218E: Undefined symbol __rt_memcpy_w (referred from BrewTest.o).
Finished: 0 information, 1 warning and 4 error messages.
My ARMLIB is set to ARMLIB = $(ARM_HOME)/lib. For kicks, I tried
ARMLIB = $(ARM_HOME)/lib/armlib, but same problem.
Hope someone can help here...
Thanks!
MM

I'm compiling an app with get the following error during the link phase:
Error: L6218E: Undefined symbol __rt_udiv (referred from Lara.o).
Error: L6218E: Undefined symbol __rt_sdiv (referred from Level.o).
Error: L6218E: Undefined symbol __rt_sdiv10 (referred from Level.o).
Error: L6218E: Undefined symbol __rt_memcpy_w (referred from BrewTest.o).
Finished: 0 information, 1 warning and 4 error messages.
My ARMLIB is set to ARMLIB = $(ARM_HOME)/lib. For kicks, I tried
ARMLIB = $(ARM_HOME)/lib/armlib, but same problem.
Hope someone can help here...
Thanks!
MM

whatever wet.o comes from is using memcpy, it may be calling another function that somehow inlines it, but its there.
use the -S option of armcc and take a look at the code it produces and youll see the memcpy.

whatever wet.o comes from is using memcpy, it may be calling another function that somehow inlines it, but its there.
use the -S option of armcc and take a look at the code it produces and youll see the memcpy.

Please make sure that you have included all the c files in the app make file.

Please make sure that you have included all the c files in the app make file.