bladox.com Forum Index bladox.com
Turbo SIM Toolkit Adapter Forums
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Compile error - Undefined symbol --

 
Post new topic   Reply to topic    bladox.com Forum Index -> Development
View previous topic :: View next topic  
Author Message
eramosipn



Joined: 02 Apr 2012
Posts: 1

PostPosted: Tue Apr 03, 2012 4:52 am    Post subject: Compile error - Undefined symbol -- Reply with quote

Hello, I have some troubles to compile the example helloworld, I got this error:

u8 PROGMEM t_Foo_en[] = "Hello World!";

void action_menu (void *data)
{
display_text_raw (t_Foo_en, Q_DISPLAY_TEXT_USER_CLEAR);
}

void turbo_handler (u8 action, void *data)
{
switch (action)
{
case ACTION_INSERT_MENU:
insert_menu (t_Foo_en);
break;
case ACTION_MENU_SELECTION:
stk_thread (action_menu, data);
break;
default:
break;
}
}

root@ubuntu:~/Bladox/turboprog/examples/helloworld2# make
avr-objdump --turbo-manifest "Version: 1.0.0 Vendor: ECOPROTEC" --turbo helloworld2.elf
Undefined symbol insert_menu
[color=red]Undefined symbol stk_thread
[color=red]Undefined symbol display_text_raw
[color=red]make: *** [helloworld2.trb] Error 1[/b]



I tried put the libs into the path, I reinstall everything binutils, gcc and i have the same results.

I don't know whats is the error, but if I compile the example helloword provide in the turbo-prog files I got succes compile:

u8 PROGMEM hello[] = "helloworld!";

void turbo_handler (u8 action, USB_Data * data)
{
switch (action)
{
case 0x80:
usb_send (NO_ERROR, sizeof (hello), hello);
default:
break;
}
}

Sucess compile

avr-objdump --turbo-manifest "Version: 2.0.0 Vendor: ECOPROTEC" --turbo helloworld.elf
Size PROGMEM: 32 RAM: 0


Eramos/ Ubuntu 11.10
Back to top
View user's profile Send private message
pz



Joined: 12 Mar 2004
Posts: 1161

PostPosted: Wed Apr 04, 2012 12:20 pm    Post subject: Reply with quote

Why it's called helloworld2? Have you just copied the helloworld dir or have you done any changes?

All you need to change in the Makefile is the TURBO_DIR = ../somewhere/turbo-devel. What is this value and where do you have turbo-devel package installed?
Back to top
View user's profile Send private message
mA



Joined: 20 Apr 2013
Posts: 2

PostPosted: Sat Apr 20, 2013 11:52 am    Post subject: Reply with quote

I have exactly the same problem, but I named the file helloworld and replaced that with the helloworld which is in examples folder in turbo-prog. I set the TURBO_DIR := ../../../turbo-devel . Can anyone help me please! Question
Back to top
View user's profile Send private message
pz



Joined: 12 Mar 2004
Posts: 1161

PostPosted: Wed Apr 24, 2013 7:03 am    Post subject: Reply with quote

Are you trying to compile the helloworld example for Turbo SIM (TL2,...) or Turbo Programmer 2? Anyway just setting the right TURBO_DIR in the Makefile to point to the turbo-devel directory is/should be/must be enough. All the symbols are in the files located in this dir. How does your whole "make" output looks like?
Back to top
View user's profile Send private message
mA



Joined: 20 Apr 2013
Posts: 2

PostPosted: Wed Apr 24, 2013 5:31 pm    Post subject: Reply with quote

I have extracted turbo-prog-utils-3.2.3 and turbo-devel-1.5.16 in the same folder and have renamed that to turbo-devel.
My helleworld.c is in turbo-prog-utils3.2.3/examples/helloworld/hellowworld.c
and my Makefile:
Code:

ifndef TPROG_DIR
TPROG_DIR = ../../
endif

ifndef TURBO_DIR
TURBO_DIR := ../../../turbo-devel
endif

TURBO_TAG = #--turbo-manifest "Version: 2.0.0 Vendor: BLADOX"  #--turbo-verbose
INCDIR  = -I$(TURBO_DIR)/include -I$(TPROG_DIR)/include -I.
LIBDIR = -L$(TURBO_DIR)/lib

CC = avr-gcc
LD = avr-ld
RM = rm -f

TRG = helloworld
SRC = helloworld.c

LIB =

CFLAGS    = -std=gnu99 -mmcu=atmega128 -fno-jump-tables -Wimplicit-function-declaration -Os -fno-builtin
LDFLAGS = -L$(LIBDIR) -T $(TPROG_DIR)/lib/turbo.lds -d -r --emit-relocs -R $(TPROG_DIR)/lib/public_calls $(LIB) `avr-gcc -print-libgcc-file-name`

OBJ = $(SRC:.c=.o)
 
all:    $(TRG).trb

include $(SRC:.c=.d)

%.o : %.c
    $(CC) -c $(CFLAGS) $(INCDIR) $< -o $@

%.d: %.c
    $(CC) -M $(CFLAGS) $(INCDIR) $< | sed 's/$*.o/& $@/g' >$@

$(TRG).elf: $(OBJ)
    $(LD) -o $@ $(OBJ) $(LDFLAGS)

$(TRG).trb: $(TRG).elf
    avr-objdump $(TURBO_TAG) --turbo $(TRG).elf

dis: $(TRG).elf
    avr-objdump -D --architecture=avr:5  $(TRG).elf >$(TRG).dis

indent:
    for X in $(SRC); do \
        indent -npsl -sob -bad -bli0 -cli2 $$X; \
        done

install: all
#    cp $(TRG).trb ../../modules

clean:
    $(RM) *.o
    $(RM) *.d
    $(RM) *~
    $(RM) $(TRG).dis
    $(RM) $(TRG).elf
    $(RM) $(TRG).trb




and I got those errors which were mentioned. But then I changed my Makefile as below:
new Makefile:

Code:


ifndef TURBO_DIR
TURBO_DIR = ../../../turbo-devel
endif

TURBO_TAG = --turbo-manifest "Version: 1.2.3 Vendor: BLADOX"  #--turbo-verbose
INCDIR    = -I$(TURBO_DIR)/include -I.
LIBDIR = $(TURBO_DIR)/lib

CC = avr-gcc
LD = avr-ld
RM = rm -f

TRG = helloworld
SRC = helloworld.c

LIB =

CFLAGS  = -std=gnu99 -mmcu=atmega128 -fno-jump-tables -Wimplicit-function-declaration -Os -fno-builtin
LDFLAGS = -L$(LIBDIR) -T turbo.lds -d -r --emit-relocs -R $(LIBDIR)/public_calls $(LIB) -lm -lc `avr-gcc -print-libgcc-file-name`

OBJ = $(SRC:.c=.o)
 
all:    $(TRG).trb

include $(SRC:.c=.d)

%.o : %.c
    $(CC) -c $(CFLAGS) $(INCDIR) $< -o $@

%.d: %.c
    $(CC) -M $(CFLAGS) $(INCDIR) $< | sed 's/$*.o/& $@/g' >$@

$(TRG).elf: $(OBJ)
    $(LD) -o $@ $(OBJ) $(LDFLAGS)

$(TRG).trb: $(TRG).elf
    avr-objdump $(TURBO_TAG) --turbo $(TRG).elf

dis: $(TRG).elf
    avr-objdump -D --architecture=avr:5  $(TRG).elf >$(TRG).dis

install: all
    cp $(TRG).trb ../bin

indent:
    for X in *.[ch]; do \
        indent -npsl -sob -bad -bli0 -cli2 $$X; \
        done

clean:
    $(RM) *.o
    $(RM) *.d
    $(RM) *.i
    $(RM) *.s
    $(RM) *~
    $(RM) $(TRG).dis
    $(RM) $(TRG).elf
    $(RM) $(TRG).trb



and I could successfully produce helloworld.trb file. But at the end of making process, I found these two lines:
BFD: BFD 2.14 20030612 assertion fail elf32-avr.c:394
BFD: BFD 2.14 20030612 assertion fail elf32-avr.c:394
Size PROGMEM: 54 RAM: 0

Are these errors?
I uploaded helloworld.trb file on the Turbo Programmer with cemu in turbo-prog-utils , but when I insert Turbo Lite in my phone and I select the menu 'Hello World!;, sim resets and nothing will be displayed.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    bladox.com Forum Index -> Development All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group