[En-Nut-Discussion] undefined reference to "NutAppMain" in C++ applications

Christian.Schilmoeller at camco.de Christian.Schilmoeller at camco.de
Thu Oct 13 16:05:26 CEST 2005


Hello NutOS experts!

I need a little advice concerning the following problem:
I wrote an application in C++ (avr-gcc) which is roughly a TCP server.
It worked nicely under NutOS 3.9.6. Now I updated to NutOS 3.9.8 and I'm 
running into problems.

The linker complains about the following:

avr-gcc ethercai.o cai_irqcore.o cai_trigger.o cai_socket.o led.o 
cai2_pollthread.o cai2_timer.o admin.o  crc.o -mmcu=atmega128 
-Wl,--defsym=main=0,-Map=ethercai.map,--cref 
-LD:/ethernut-3.9.8/nutbld/lib  D:/ethernut-3.9.8/nutbld/lib/nutinit.o 
-lnutdev -lnutnet -lnutpro -lnutnet -lnutfs -lnutos -lnutdev -lnutcrt 
-lnutos  -o ethercai.elf
D:/ethernut-3.9.8/nutbld/lib/nutinit.o(.text+0x12): In function `NutIdle':
: undefined reference to `NutAppMain'
D:/ethernut-3.9.8/nutbld/lib/nutinit.o(.text+0x14): In function `NutIdle':
: undefined reference to `NutAppMain'
make: *** [ethercai.elf] Error 1

I've found another thread in the mailing list which covers the same 
problem (August 05 - "Compiler problem"). 
The reason in that case seems only to be that 
#define main    NutAppMain
must be included somewhere (which resides in arch/avr.h)

But in my case, this is not the solution. I think that "main" is been 
translated into something weird like "_Z10_cxx_main_v" due to C++ name 
mangling. 
Therefore the above substitution does not work.
What can I do?

Thanks in advance,

Christian






More information about the En-Nut-Discussion mailing list