View unanswered posts | View active topics It is currently Sat Aug 23, 2014 12:25 pm



Reply to topic  [ 4 posts ] 
 arm-eabi-g++ not found 
Author Message

Joined: Wed Jul 20, 2011 5:52 pm
Posts: 2
Hi, I have the same problem as in this thread ( viewtopic.php?f=2&t=2000 ), except on Ubuntu instead of a Mac.
Make can't seem to find any of the arm-eabi tools even though they definitely exist and the PATH variable includes the DevkitPro/devkitARM/bin directory.

Here is the output of make. It says it can't find arm-eabi-g++, but the problem is not g++ specific. Forexample, if I change it to gcc, it can't find arm-eabi-gcc either. Both of those exist in the ~/DevkitPro/devkitARM/bin folder and show up with ls.
Code:
/home/robert/DevkitPro/devkitARM/base_rules:93: PATH is ~/DevkitPro/devkitARM/bin:~/DevkitPro/portlibs/arm/bin:~/DevkitPro/devkitARM/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
make: Warning: File `Makefile' has modification time 60 s in the future
/home/robert/DevkitPro/devkitARM/base_rules:93: PATH is ~/DevkitPro/devkitARM/bin:~/DevkitPro/portlibs/arm/bin:~/DevkitPro/devkitARM/bin:~/DevkitPro/devkitARM/bin:~/DevkitPro/portlibs/arm/bin:~/DevkitPro/devkitARM/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
make[1]: Warning: File `/home/robert/Shared_Ubuntu/GBA/FPTest/Makefile' has modification time 60 s in the future
backgrounds.cpp
arm-eabi-g++ -MMD -MP -MF /home/robert/Shared_Ubuntu/GBA/FPTest/build/backgrounds.d -g -Wall -O3 -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer -ffast-math -mthumb -mthumb-interwork  -I~/DevkitPro/libgba/include -I/home/robert/Shared_Ubuntu/GBA/FPTest/build -fno-rtti -fno-exceptions -c /home/robert/Shared_Ubuntu/GBA/FPTest/./backgrounds.cpp -o backgrounds.o
/bin/sh: arm-eabi-g++: not found
make[1]: *** [backgrounds.o] Error 127
make: *** [build] Error 2


Here is my make file
Code:
#---------------------------------------------------------------------------------
# Clear the implicit built in rules
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------

# debug WTF is going on...
#OLD_SHELL := $(SHELL)
#SHELL = $(warning [$@])$(OLD_SHELL) -x

#DEVKITPRO=../DevkitPro
#DEVKITPRO=~/Shared_Ubuntu/GBA/DevkitPro
#DEVKITARM=$(DEVKITPRO)/devkitARM
#PATH:=$(DEVKITARM)/bin:$(PATH)

export DEVKITPRO=~/DevkitPro
export DEVKITARM=$(DEVKITPRO)/devkitARM
export PATH:=$(DEVKITARM)/bin:$(PATH)
#$(warning PATH is $(PATH))

ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM)
endif

include $(DEVKITARM)/gba_rules

#---------------------------------------------------------------------------------
# TARGET is the name of the output, if this ends with _mb a multiboot image is generated
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# DATA is a list of directories containing data files
# INCLUDES is a list of directories containing header files
#---------------------------------------------------------------------------------
TARGET      :=   $(shell basename $(CURDIR))_mb
BUILD      :=   build
SOURCES      :=   .
DATA      :=
GRAPHICS   :=   gfx
INCLUDES   :=

#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH   :=   -mthumb -mthumb-interwork

CFLAGS   :=   -g -Wall -O3\
      -mcpu=arm7tdmi -mtune=arm7tdmi\
       -fomit-frame-pointer\
      -ffast-math \
      $(ARCH)

CFLAGS   +=   $(INCLUDE)

CXXFLAGS   :=   $(CFLAGS) -fno-rtti -fno-exceptions

ASFLAGS   :=   $(ARCH)
LDFLAGS   =   -g $(ARCH) -Wl,-Map,$(notdir $@).map

#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS   :=   -lgba

#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS   :=   $(LIBGBA)

#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------

export OUTPUT   :=   $(CURDIR)/$(TARGET)
export VPATH   :=   $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
         $(foreach dir,$(DATA),$(CURDIR)/$(dir))

export DEPSDIR   :=   $(CURDIR)/$(BUILD)

#---------------------------------------------------------------------------------
# automatically build a list of object files for our project
#---------------------------------------------------------------------------------
CFILES      :=   $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES   :=   $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES      :=   $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES   :=   $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
BMPFILES   :=   $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.bmp)))

#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
   export LD   :=   $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
   export LD   :=   $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------

export OFILES   :=   $(addsuffix .o,$(BINFILES)) \
               $(BMPFILES:.bmp=.o) \
               $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)

#---------------------------------------------------------------------------------
# build a list of include paths
#---------------------------------------------------------------------------------
export INCLUDE   :=   $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
         $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
         -I$(CURDIR)/$(BUILD)

#---------------------------------------------------------------------------------
# build a list of library paths
#---------------------------------------------------------------------------------
export LIBPATHS   :=   $(foreach dir,$(LIBDIRS),-L$(dir)/lib)

.PHONY: $(BUILD) clean

#---------------------------------------------------------------------------------
$(BUILD):
   @[ -d $@ ] || mkdir -p $@
   @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile

all   : $(BUILD)
#---------------------------------------------------------------------------------
clean:
   @echo clean ...
   @rm -fr $(BUILD) $(TARGET).elf $(TARGET).gba

#---------------------------------------------------------------------------------
else

DEPENDS   :=   $(OFILES:.o=.d)

#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).gba   :   $(OUTPUT).elf

$(OUTPUT).elf   :   $(OFILES)


#---------------------------------------------------------------------------------
# The bin2o rule should be copied and modified
# for each extension used in the data directories
#---------------------------------------------------------------------------------

#---------------------------------------------------------------------------------
# This rule links in binary data with the .bin extension
#---------------------------------------------------------------------------------
%.bin.o   :   %.bin
#---------------------------------------------------------------------------------
   @echo $(notdir $<)
   @$(bin2o)

#---------------------------------------------------------------------------------
# This rule links in binary data with the .raw extension
#---------------------------------------------------------------------------------
%.raw.o   :   %.raw
#---------------------------------------------------------------------------------
   @echo $(notdir $<)
   @$(bin2o)

#---------------------------------------------------------------------------------
# This rule creates assembly source files using grit
# grit takes an image file and a .grit describing how the file is to be processed
# add additional rules like this for each image extension
# you use in the graphics folders
#---------------------------------------------------------------------------------
%.s %.h   : %.bmp %.grit
#---------------------------------------------------------------------------------
   grit $< -fts -o$*

-include $(DEPENDS)

#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------


Here is my base_rules file. (I edited it to print out the PATH variable)
Code:
#---------------------------------------------------------------------------------
# path to tools
#---------------------------------------------------------------------------------
export PORTLIBS   :=   $(DEVKITPRO)/portlibs/arm
export PATH   :=   $(DEVKITARM)/bin:$(PORTLIBS)/bin:$(PATH)

#---------------------------------------------------------------------------------
# the prefix on the compiler executables
#---------------------------------------------------------------------------------
PREFIX      :=   arm-eabi-

export CC   :=   $(PREFIX)gcc
export CXX   :=   $(PREFIX)g++
export AS   :=   $(PREFIX)as
export AR   :=   $(PREFIX)ar
export OBJCOPY   :=   $(PREFIX)objcopy

ISVC=$(or $(VCBUILDHELPER_COMMAND),$(MSBUILDEXTENSIONSPATH32),$(MSBUILDEXTENSIONSPATH))

ifneq (,$(ISVC))
   ERROR_FILTER   :=   2>&1 | sed -e 's/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/g'
endif

#---------------------------------------------------------------------------------
%.a:
#---------------------------------------------------------------------------------
   @echo $(notdir $@)
   @rm -f $@
   $(AR) -rc $@ $^

#---------------------------------------------------------------------------------
%.arm.o: %.arm.cpp
   @echo $(notdir $<)
   $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.arm.d $(CXXFLAGS) -marm -c $< -o $@ $(ERROR_FILTER)
   
#---------------------------------------------------------------------------------
%.arm.o: %.arm.c
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.arm.d $(CFLAGS) -marm -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.arm.o: %.arm.m
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.arm.d $(OBJCFLAGS) -marm -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.thumb.o: %.thumb.cpp
   @echo $(notdir $<)
   $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.thumb.d $(CXXFLAGS) -mthumb -c $< -o $@ $(ERROR_FILTER)
   
#---------------------------------------------------------------------------------
%.thumb.o: %.thumb.c
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.thumb.d $(CFLAGS) -mthumb -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.thumb.o: %.thumb.m
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.thumb.d $(OBJCFLAGS) -mthumb -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.iwram.o: %.iwram.cpp
   @echo $(notdir $<)
   $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.iwram.d $(CXXFLAGS) -marm -mlong-calls -c $< -o $@ $(ERROR_FILTER)
   
#---------------------------------------------------------------------------------
%.iwram.o: %.iwram.c
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.iwram.d $(CFLAGS) -marm -mlong-calls -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.iwram.o: %.iwram.m
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.iwram.d $(OBJCFLAGS) -marm -mlong-calls -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.itcm.o: %.itcm.cpp
   @echo $(notdir $<)
   $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.itcm.d $(CXXFLAGS) -marm -mlong-calls -c $< -o $@ $(ERROR_FILTER)
   
#---------------------------------------------------------------------------------
%.itcm.o: %.itcm.c
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.itcm.d $(CFLAGS) -marm -mlong-calls -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.itcm.o: %.itcm.m
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.itcm.d $(OBJCFLAGS) -marm -mlong-calls -c $< -o $@ $(ERROR_FILTER)


#---------------------------------------------------------------------------------
$(warning PATH is $(PATH))
%.o: %.cpp
   @echo $(notdir $<)
   $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) -c $< -o $@ $(ERROR_FILTER)
   
#---------------------------------------------------------------------------------
%.o: %.c
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.o: %.m
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(OBJCFLAGS) -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.o: %.s
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
%.o: %.S
   @echo $(notdir $<)
   $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)

#---------------------------------------------------------------------------------
# canned command sequence for binary data
#---------------------------------------------------------------------------------
define bin2o
   bin2s $< | $(AS) -o $(@)
   echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(<F) | tr . _)`.h
   echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(<F) | tr . _)`.h
   echo "extern const u32" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(<F) | tr . _)`.h
endef


Wed Jul 20, 2011 5:59 pm
Profile
Site Admin

Joined: Tue Aug 09, 2005 3:21 am
Posts: 1135
Location: UK
It's because of the ~ in the path where you've set the environment variables directly in the Makefile.

The DEVKITPRO and DEVKITARM variables should be set in your environment, not directly in the Makefile. If you ever distribute source for other people to build this *will* mess them up. Put the variable settings in ~/.profile or ~/.bash_profile the ~ should get expanded to your home directory when you log in.

_________________
devkitPro IRC support
Personal Blog


Thu Jul 21, 2011 1:50 am
Profile ICQ WWW

Joined: Wed Jul 20, 2011 5:52 pm
Posts: 2
Well I'd prefer to put the settings in the makefile so I don't need to make permanent changes to the profile or environment variables. Is this possible? Or is setting them outside the makefile the only way?


Thu Jul 21, 2011 5:24 am
Profile
Site Admin

Joined: Tue Aug 09, 2005 3:21 am
Posts: 1135
Location: UK
Setting them outside the Makefile is the only reasonable way. Nobody else has issues with adding environment variables ...

_________________
devkitPro IRC support
Personal Blog


Sat Jul 30, 2011 6:24 pm
Profile ICQ WWW
Display posts from previous:  Sort by  
Reply to topic   [ 4 posts ] 

Who is online

Users browsing this forum: Yahoo [Bot] and 2 guests


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 post attachments in this forum

Search for:
Jump to:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.
Get devkitPro at SourceForge.net. Fast, secure and Free Open Source software downloads