2011-12-21 2 views
-2

Я загрузил make-файл, и я запускаю его с кодом C/C++ в xcode.Shell/Makefile Linker

Он работает и выводить информацию (в консольном режиме), но когда я делаю приложение (с GUI) он говорит:

 
**make: avr-gcc: No such file or directory 

make: *** [main.o] Error 1** 

Я бегу это так:

snprintf(cmd, sizeof(cmd), "make -C \"%s/System/\" flash", path); 

и т. Д., Но компилятор не создает/экспортирует (.o) файлы, поэтому компоновщик не находит их.

The makefile is:

######### AVR Project Makefile Template ######### 
######          ###### 
###### Copyright (C) 2003-2005,Pat Deegan, ###### 
######   Psychogenic Inc    ###### 
######   All Rights Reserved   ###### 
######          ###### 
###### You are free to use this code as part ###### 
###### of your own applications provided  ###### 
###### you keep this copyright notice intact ###### 
###### and acknowledge its authorship with ###### 
###### the words:        ###### 
######          ###### 
###### "Contains software by Pat Deegan of ###### 
###### Psychogenic Inc (www.psychogenic.com)" ###### 
######          ###### 
###### If you use it as part of a web site ###### 
###### please include a link to our site,  ###### 
###### http://electrons.psychogenic.com or ###### 
###### http://www.psychogenic.com    ###### 
######          ###### 
#################################################### 


##### This Makefile will make compiling Atmel AVR 
##### micro controller projects simple with Linux 
##### or other Unix workstations and the AVR-GCC 
##### tools. 
##### 
##### It supports C, C++ and Assembly source files. 
##### 
##### Customize the values as indicated below and : 
##### make 
##### make disasm 
##### make stats 
##### make hex 
##### make writeflash 
##### make gdbinit 
##### or make clean 
##### 
##### See the http://electrons.psychogenic.com/ 
##### website for detailed instructions 


#################################################### 
#####           ##### 
#####    Configuration    ##### 
#####           ##### 
##### Customize the values in this section for ##### 
##### your project. MCU, PROJECTNAME and  ##### 
##### PRJSRC must be setup for all projects, ##### 
##### the remaining variables are only   ##### 
##### relevant to those needing additional  ##### 
##### include dirs or libraries and those  ##### 
##### who wish to use the avrdude programmer ##### 
#####           ##### 
##### See http://electrons.psychogenic.com/ ##### 
##### for further details.      ##### 
#####           ##### 
#################################################### 


#####   Target Specific Details   ##### 
#####  Customize these for your project  ##### 

# Name of target controller 
# (e.g. 'at90s8515', see the available avr-gcc mmcu 
# options for possible values) 
MCU=atmega8 

# id to use with programmer 
# default: PROGRAMMER_MCU=$(MCU) 
# In case the programer used, e.g avrdude, doesn't 
# accept the same MCU name as avr-gcc (for example 
# for ATmega8s, avr-gcc expects 'atmega8' and 
# avrdude requires 'm8') 
PROGRAMMER_MCU=m8 

# Name of our project 
# (use a single word, e.g. 'myproject') 
PROJECTNAME=myproject 

# Source files 
# List C/C++/Assembly source files: 
# (list all files to compile, e.g. 'a.c b.cpp as.S'): 
# Use .cc, .cpp or .C suffix for C++ files, use .S 
# (NOT .s !!!) for assembly source code files. 
PRJSRC=main.c myclass.cpp lowlevelstuff.S 

# additional includes (e.g. -I/path/to/mydir) 
INC=-I/path/to/include 

# libraries to link in (e.g. -lmylib) 
LIBS= 

# Optimization level, 
# use s (size opt), 1, 2, 3 or 0 (off) 
OPTLEVEL=s 


#####  AVR Dude 'writeflash' options  ##### 
##### If you are using the avrdude program 
##### (http://www.bsdhome.com/avrdude/) to write 
##### to the MCU, you can set the following config 
##### options and use 'make writeflash' to program 
##### the device. 


# programmer id--check the avrdude for complete list 
# of available opts. These should include stk500, 
# avr910, avrisp, bsd, pony and more. Set this to 
# one of the valid "-c PROGRAMMER-ID" values 
# described in the avrdude info page. 
# 
AVRDUDE_PROGRAMMERID=stk500 

# port--serial or parallel port to which your 
# hardware programmer is attached 
# 
AVRDUDE_PORT=/dev/ttyS1 


#################################################### 
#####    Config Done    ##### 
#####           ##### 
##### You shouldn't need to edit anything  ##### 
##### below to use the makefile but may wish ##### 
##### to override a few of the flags   ##### 
##### nonetheless        ##### 
#####           ##### 
#################################################### 


##### Flags #### 

# HEXFORMAT -- format for .hex file output 
HEXFORMAT=ihex 

# compiler 
CFLAGS=-I. $(INC) -g -mmcu=$(MCU) -O$(OPTLEVEL) \ 
    -fpack-struct -fshort-enums    \ 
    -funsigned-bitfields -funsigned-char \ 
    -Wall -Wstrict-prototypes    \ 
    -Wa,-ahlms=$(firstword     \ 
    $(filter %.lst, $(<:.c=.lst))) 

# c++ specific flags 
CPPFLAGS=-fno-exceptions    \ 
    -Wa,-ahlms=$(firstword   \ 
    $(filter %.lst, $(<:.cpp=.lst))\ 
    $(filter %.lst, $(<:.cc=.lst)) \ 
    $(filter %.lst, $(<:.C=.lst))) 

# assembler 
ASMFLAGS =-I. $(INC) -mmcu=$(MCU)  \ 
    -x assembler-with-cpp   \ 
    -Wa,-gstabs,-ahlms=$(firstword \ 
     $(<:.S=.lst) $(<.s=.lst)) 


# linker 
LDFLAGS=-Wl,-Map,$(TRG).map -mmcu=$(MCU) \ 
    -lm $(LIBS) 

##### executables #### 
CC=avr-gcc 
OBJCOPY=avr-objcopy 
OBJDUMP=avr-objdump 
SIZE=avr-size 
AVRDUDE=avrdude 
REMOVE=rm -f 

##### automatic target names #### 
TRG=$(PROJECTNAME).out 
DUMPTRG=$(PROJECTNAME).s 

HEXROMTRG=$(PROJECTNAME).hex 
HEXTRG=$(HEXROMTRG) $(PROJECTNAME).ee.hex 
GDBINITFILE=gdbinit-$(PROJECTNAME) 

# Define all object files. 

# Start by splitting source files by type 
# C++ 
CPPFILES=$(filter %.cpp, $(PRJSRC)) 
CCFILES=$(filter %.cc, $(PRJSRC)) 
BIGCFILES=$(filter %.C, $(PRJSRC)) 
# C 
CFILES=$(filter %.c, $(PRJSRC)) 
# Assembly 
ASMFILES=$(filter %.S, $(PRJSRC)) 


# List all object files we need to create 
OBJDEPS=$(CFILES:.c=.o) \ 
    $(CPPFILES:.cpp=.o)\ 
    $(BIGCFILES:.C=.o) \ 
    $(CCFILES:.cc=.o) \ 
    $(ASMFILES:.S=.o) 

# Define all lst files. 
LST=$(filter %.lst, $(OBJDEPS:.o=.lst)) 

# All the possible generated assembly 
# files (.s files) 
GENASMFILES=$(filter %.s, $(OBJDEPS:.o=.s)) 


.SUFFIXES : .c .cc .cpp .C .o .out .s .S \ 
    .hex .ee.hex .h .hh .hpp 


.PHONY: writeflash clean stats gdbinit stats 

# Make targets: 
# all, disasm, stats, hex, writeflash/install, clean 
all: $(TRG) 

disasm: $(DUMPTRG) stats 

stats: $(TRG) 
    $(OBJDUMP) -h $(TRG) 
    $(SIZE) $(TRG) 

hex: $(HEXTRG) 


writeflash: hex 
    $(AVRDUDE) -c $(AVRDUDE_PROGRAMMERID) \ 
    -p $(PROGRAMMER_MCU) -P $(AVRDUDE_PORT) -e  \ 
    -U flash:w:$(HEXROMTRG) 

install: writeflash 

$(DUMPTRG): $(TRG) 
    $(OBJDUMP) -S $< > [email protected] 


$(TRG): $(OBJDEPS) 
    $(CC) $(LDFLAGS) -o $(TRG) $(OBJDEPS) 


#### Generating assembly #### 
# asm from C 
%.s: %.c 
    $(CC) -S $(CFLAGS) $< -o [email protected] 

# asm from (hand coded) asm 
%.s: %.S 
    $(CC) -S $(ASMFLAGS) $< > [email protected] 


# asm from C++ 
.cpp.s .cc.s .C.s : 
    $(CC) -S $(CFLAGS) $(CPPFLAGS) $< -o [email protected] 



#### Generating object files #### 
# object from C 
.c.o: 
    $(CC) $(CFLAGS) -c $< -o [email protected] 


# object from C++ (.cc, .cpp, .C files) 
.cc.o .cpp.o .C.o : 
    $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o [email protected] 

# object from asm 
.S.o : 
    $(CC) $(ASMFLAGS) -c $< -o [email protected] 


#### Generating hex files #### 
# hex files from elf 
##### Generating a gdb initialisation file ##### 
.out.hex: 
    $(OBJCOPY) -j .text     \ 
     -j .data      \ 
     -O $(HEXFORMAT) $< [email protected] 

.out.ee.hex: 
    $(OBJCOPY) -j .eeprom     \ 
     --change-section-lma .eeprom=0 \ 
     -O $(HEXFORMAT) $< [email protected] 


##### Generating a gdb initialisation file ##### 
##### Use by launching simulavr and avr-gdb: ##### 
##### avr-gdb -x gdbinit-myproject   ##### 
gdbinit: $(GDBINITFILE) 

$(GDBINITFILE): $(TRG) 
    @echo "file $(TRG)" > $(GDBINITFILE) 

    @echo "target remote localhost:1212" \ 
         >> $(GDBINITFILE) 

    @echo "load"  >> $(GDBINITFILE) 
    @echo "break main" >> $(GDBINITFILE) 
    @echo "continue" >> $(GDBINITFILE) 
    @echo 
    @echo "Use 'avr-gdb -x $(GDBINITFILE)'" 


#### Cleanup #### 
clean: 
    $(REMOVE) $(TRG) $(TRG).map $(DUMPTRG) 
    $(REMOVE) $(OBJDEPS) 
    $(REMOVE) $(LST) $(GDBINITFILE) 
    $(REMOVE) $(GENASMFILES) 
    $(REMOVE) $(HEXTRG) 



#####     EOF     ##### 

ответ

1

сообщения об ошибках, как

avr-gcc: No such file or directory 

Указать 1 из нескольких вещей

  1. исполняемый avr-gcc не установлен (правильно)

  2. и/или PATH env var не содержит директорию, в которой содержится исполняемый файл

  3. makefile был вызван неправильно.

  4. Другие

Вот некоторые вещи, чтобы попробовать

Когда вы говорите «загрузили Makefile», является то, что все, что вы скачали, или же скачать полный пакет (АВР?) Если просто make-файл, вы должны сначала загрузить весь пакет программного обеспечения, прежде чем сможете продолжить.

Многие пакеты программного обеспечения полагаются на данные настройки, которые автоматически записываются или передаются как env-vars для запуска файла make.

Просмотрите файлы .txt (иногда .doc), которые поставляются с дистрибутивом программного обеспечения. Найдите README или INSTALL. Вы можете обнаружить, что вам нужно запустить простой набор команд для настройки среды. Очень часто

./configure 
make 
make install 

все, что вам нужно.

Если нет никаких указаний, как это с вашим пакетом, то вам нужно узнать, где ваши АРН-НКУ расположен и добавить, что в PATH, то есть

find/-name 'avr-gcc*' 

Возьмите путь, который возвращается, сдирать окончание /avr-gcc и добавить его в PATH, то есть

PATH="${PATH}:/path/to/avr-gcc-subdir" 
export PATH 
make 

Если это не работает, пожалуйста, измените ваш вопрос, чтобы включить URL к исходному коду для этого пакета.

Надеюсь, это поможет.

P.S.Не забудьте принять ответ, который наилучшим образом решает вашу проблему, если таковая имеется, нажав знак галочки, http://i.imgur.com/uqJeW.png. Когда вы увидите хорошее Q & A, проголосуйте за них, используя серые треугольники, http://i.imgur.com/kygEP.png. Обратите внимание, что «предоставление» точек репутации другим означает не вычитание очков вашей репутации (если только вы не разместили щедрость).

+0

Проблема в том, что она работает, если я пишу код в режиме консоли, бот доцент, когда я использую gui: я запускаю его так: snprintf (cmd, sizeof (cmd), "make -C \"% s/System/\ "flash", path); и т. д. но компилятор dosent генерирует/экспортирует (.o) файлы .. поэтому компоновщик не находит их – user1104856

+0

Пожалуйста, отредактируйте свой вопрос, чтобы включить эту информацию. Кроме того, это «настроить» часть этой системы, и вы ее запустили? Если вы все еще застряли в «avr-gcc: Нет такого файла или каталога», то увидите первые 3 из моего списка, одна из которых - проблема, вам нужно выяснить, как заставить ваш графический интерфейс принимать настройки PATH и т. Д. Вы получите лучшую помощь в своем проекте, если научитесь использовать правильные теги, я думаю, что другие пользователи xcode, вероятно, столкнулись с этим. удачи. – shellter