make: *** [lejos_nxt_ram.elf] Erreur 1

OP #1173726
Hi ! I'm using Embedded Linux Development Kit and I have some errors
when I try to execute the makefile to rebuild a firmware (lejos for
nxt):

/opt/eldk/usr/bin/arm-linux-ld: ERROR: init.o uses FPA instructions,
whereas lejos_nxt_ram.elf does not
/opt/eldk/usr/bin/arm-linux-ld: failed to merge target specific data of
file init.o
/opt/eldk/usr/bin/arm-linux-ld: ERROR: interrupts.o uses FPA
instructions, whereas lejos_nxt_ram.elf does not
/opt/eldk/usr/bin/arm-linux-ld: failed to merge target specific data of
file interrupts.o
/opt/eldk/usr/bin/arm-linux-ld: ERROR: vectors.o uses FPA instructions,
whereas lejos_nxt_ram.elf does not
/opt/eldk/usr/bin/arm-linux-ld: failed to merge target specific data of
file vectors.o
/opt/eldk/usr/bin/arm-linux-ld: ERROR: irq.o uses FPA instructions,
whereas lejos_nxt_ram.elf does not
/opt/eldk/usr/bin/arm-linux-ld: failed to merge target specific data of
file irq.o
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/arm/lib/libc.a(strlen.o) does not support interworking,
whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/arm/lib/libc.a(memset.o) does not support interworking,
whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/arm/lib/libc.a(memcpy.o) does not support interworking,
whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/arm/lib/libc.a(wordcopy.o) does not support interworking,
whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/usr/lib/gcc/arm-linux/4.0.0/libgcc.a(_udivsi3.o) does not
support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/usr/lib/gcc/arm-linux/4.0.0/libgcc.a(_divsi3.o) does not
support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/usr/lib/gcc/arm-linux/4.0.0/libgcc.a(_umodsi3.o) does not
support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/usr/lib/gcc/arm-linux/4.0.0/libgcc.a(_modsi3.o) does not
support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/usr/lib/gcc/arm-linux/4.0.0/libgcc.a(_dvmd_lnx.o) does not
support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/usr/lib/gcc/arm-linux/4.0.0/libgcc.a(_addsubsf3.o) does not
support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/usr/lib/gcc/arm-linux/4.0.0/libgcc.a(_muldivsf3.o) does not
support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/usr/lib/gcc/arm-linux/4.0.0/libgcc.a(_cmpsf2.o) does not
support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning:
/opt/eldk/usr/lib/gcc/arm-linux/4.0.0/libgcc.a(_fixsfsi.o) does not
support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: Warning: /opt/eldk/arm/lib/libm.so does
not support interworking, whereas lejos_nxt_ram.elf does
/opt/eldk/usr/bin/arm-linux-ld: error: no memory region specified for
loadable section `.dynamic'
make: *** [lejos_nxt_ram.elf] Erreur 1


I don't manage to solved these errors; Can you help me please?

Here there is the makefile:

  GCC_VERSION :=4.0.0
  COMP_PATH   := /opt/eldk
  LIBPREFIX   := $(COMP_PATH)/arm/lib
  GCC_LIB     :=
$(COMP_PATH)/usr/lib/gcc/arm-linux/$(GCC_VERSION)/libgcc.a
  LIBC        := $(COMP_PATH)/arm/lib/libc.a

  TARGET_PREFIX :=arm-linux
  INC_PATH := $(COMP_PATH)/arm/usr/include
  CC       := $(COMP_PATH)/usr/bin/$(TARGET_PREFIX)-gcc
  AS       := $(COMP_PATH)/usr/bin/$(TARGET_PREFIX)-as
  AR       := $(COMP_PATH)/usr/bin/$(TARGET_PREFIX)-ar
  LD       := $(COMP_PATH)/usr/bin/$(TARGET_PREFIX)-ld
  OBJCOPY  := $(COMP_PATH)/usr/bin/$(TARGET_PREFIX)-objcopy

PHONY: EnvironmentMessage
EnvironmentMessage:
  @echo " CC      $(CC)"
  @echo " AS      $(AS)"
  @echo " AR      $(AR)"
  @echo " LD      $(LD)"
  @echo " OBJCOPY $(OBJCOPY)"


Thanks for any answer.
OP #1173728
that was the environnment.make.

The real makefile is:

.SUFFIXES:

default: def_target

include environment.mak
include targetdef.mak


RAM_TARGET   := $(TARGET)_ram.elf
ROM_TARGET   := $(TARGET)_rom.elf
SAMBA_TARGET := $(TARGET)_samba_ram.bin
ROMBIN_TARGET := $(TARGET)_rom.bin

RAM_LDSCRIPT   := $(TARGET)_ram.ld
ROM_LDSCRIPT   := $(TARGET)_rom.ld
SAMBA_LDSCRIPT := $(TARGET)_samba.ld

S_OBJECTS := $(S_SOURCES:.s=.o)
C_OBJECTS := $(C_SOURCES:.c=.o) $(C_RAMSOURCES:.c=.oram)

C_OPTIMISATION_FLAGS = -Os
#C_OPTIMISATION_FLAGS = -O0

CFLAGS = -c -ffreestanding -fsigned-char -mcpu=arm7tdmi  \
  $(C_OPTIMISATION_FLAGS) -g  \
  -Winline -Wall -Werror-implicit-function-declaration \
  -I. -I$(VM_DIR) \
         -mthumb -mthumb-interwork -ffunction-sections -fdata-sections

LDFLAGS = -Map $@.map -L$(LIBPREFIX) -lm -cref --gc-sections $(LIBC)

ASFLAGS = -mthumb-interwork  -mfpu=softfpa

def_target: all


ALL_TARGETS := $(RAM_TARGET) $(ROM_TARGET) $(ROMBIN_TARGET)
$(SAMBA_TARGET)


.PHONY:  all
all:  BuildMessage $(ALL_TARGETS)

PHONY: TargetMessage
TargetMessage:
  @echo ""
  @echo "Building: $(ALL_TARGETS)"
  @echo ""
  @echo "C sources: $(C_SOURCES) to $(C_OBJECTS)"
  @echo ""
  @echo "Assembler sources: $(S_SOURCES) to $(S_OBJECTS)"
  @echo ""
  @echo "LD source: $(LDSCRIPT_SOURCE)"
  @echo ""

PHONY: BuildMessage
BuildMessage: TargetMessage EnvironmentMessage


$(SAMBA_LDSCRIPT): $(LDSCRIPT_SOURCE)
  cat $< | sed -e 's/^SAMBA_ONLY//' -e '/^RAM_ONLY/d' -e'/^ROM_ONLY/d'
>$@

$(RAM_LDSCRIPT): $(LDSCRIPT_SOURCE)
  cat $< | sed -e 's/^RAM_ONLY//' -e'/^ROM_ONLY/d' -e'/^SAMBA_ONLY/d'
>$@

$(ROM_LDSCRIPT): $(LDSCRIPT_SOURCE)
  cat $< | sed -e 's/^ROM_ONLY//' -e'/^RAM_ONLY/d' -e'/^SAMBA_ONLY/d'
>$@

$(SAMBA_TARGET)_elf: $(C_OBJECTS) $(S_OBJECTS) $(SAMBA_LDSCRIPT)
  @echo "Linking $@"
  $(LD) -o $@ $(C_OBJECTS) $(S_OBJECTS) -T $(SAMBA_LDSCRIPT) $(LIBC)
$(GCC_LIB) $(LDFLAGS)

$(RAM_TARGET): $(C_OBJECTS) $(S_OBJECTS) $(RAM_LDSCRIPT)
  @echo "Linking $@"
  $(LD) -o $@ $(C_OBJECTS) $(S_OBJECTS) -T $(RAM_LDSCRIPT) $(LIBC)
$(GCC_LIB) $(LDFLAGS)

$(ROM_TARGET): $(C_OBJECTS) $(S_OBJECTS) $(ROM_LDSCRIPT)
  @echo "Linking $@"
  $(LD) -o $@ $(C_OBJECTS) $(S_OBJECTS) -T $(ROM_LDSCRIPT) $(LIBC)
$(GCC_LIB) $(LDFLAGS)

$(ROMBIN_TARGET): $(ROM_TARGET)
  @echo "Generating binary file $@"
  $(OBJCOPY) -O binary $< $@

$(SAMBA_TARGET): $(SAMBA_TARGET)_elf
  @echo "Generating binary file $@"
  $(OBJCOPY) -O binary $< $@

%.o: %.s
  @echo "Assembling $< to $@"
  $(AS)  $(ASFLAGS) -o $@ $<

%.o: %.c
  @echo "Compiling $< to $@"
  $(CC) $(CFLAGS) -o $@ $<


%.oram: %.c
  @echo "Compiling $< to $@"
  $(CC) $(CFLAGS) -o $@ $<


.PHONY: clean
clean:
  @echo "Removing All Objects"
  @rm -f $(S_OBJECTS) $(C_OBJECTS) *.o
  @echo "Removing generated ld scripts"
  @rm  -f *.ld
  @echo "Removing target"
  @rm -f $(ALL_TARGETS)
  @echo "Removing map files"
  @ rm -f *map

-include $(C_SOURCES:.c=.d)

Sorry for this error. Thanks for any help !
Moderator #1173729
I suggest to use an arm-elf or arm-eabi toolchain not a arm-linux
toolchain. You can get precompiled binaries for Linux (if this is your
OS) i.e. from gnuarm.org and codesourcery.com
I don't know enough about the arm-linux targets but but with such a
toolchain you may try the compiler-options: -msoft-float or
-mfloat-abi=soft (add to CFLAGS).
OP #1173730
Martin Thomas wrote:
> I suggest to use an arm-elf or arm-eabi toolchain not a arm-linux
> toolchain. You can get precompiled binaries for Linux (if this is your
> OS) i.e. from gnuarm.org and codesourcery.com
> I don't know enough about the arm-linux targets but but with such a
> toolchain you may try the compiler-options: -msoft-float or
> -mfloat-abi=soft (add to CFLAGS).

I'm in training course and I have to use the arm-linux targets with such
a toolchain.

So I tried the compiler-option: -msoft-float or -mfloat-abi=soft (add to
CFLAGS) but I have exactly the same errors !

Someone can help me please ??

Have a nice day !

Reply

A question of your own? This thread is over 18 years old. Ask it in a thread of its own – more people read along there, and it gets answered more often and sooner.

Start a new thread

A fix, an addition or feedback on this thread? Then reply here.

Formatting
  • [c]C-Code[/c]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]
  • [[Title]] – link to an article
  • Link to another post: right-click its post ID (#8078628), copy the address, paste it into the text

More about formatting

Post long source code as an attachment, not in the text.

Already registered? Log in

Not shown to anyone. We send you a link; your post appears once you confirm it there.

By submitting you create a free account and accept the terms of use.