Problème compilation avec Cygwin
--Pouet--
-
ahmed -
ahmed -
Bonjour,
j'utilise actuellement Cygwin pour compiler mes programmes C, enfin j'essaie du moins... :\
J'ai téléchargé tous les packages recommandés ( make, gcc, bash, cvs, openssh, openssl, subversion... ) et ajouté le répertoire Cygwin/bin au PATH système, mais j'obtiens toujours une erreur au lancement de 'make' :
make[3]: arm-none-eabi-gcc: Command not found
J'ai épluché les forums, et les seules solutions étaient l'installation des packages gcc et make, que j'ai déjà fait :)
Merci de votre aide, j'en ai besoin..
j'utilise actuellement Cygwin pour compiler mes programmes C, enfin j'essaie du moins... :\
J'ai téléchargé tous les packages recommandés ( make, gcc, bash, cvs, openssh, openssl, subversion... ) et ajouté le répertoire Cygwin/bin au PATH système, mais j'obtiens toujours une erreur au lancement de 'make' :
make[3]: arm-none-eabi-gcc: Command not found
J'ai épluché les forums, et les seules solutions étaient l'installation des packages gcc et make, que j'ai déjà fait :)
Merci de votre aide, j'en ai besoin..
7 réponses
-
Fait tu ta compilation dans la console cygwin ?
cygwin est-il bien dans un répertoire sans espace ?
Si tu essais de compiler directement en utilisant gcc, est-ce que ça fonctionne ?
Es tu sur qu'il n'y a pas d'erreur dans ton makefile ?
Essai de savoir ce que veux dire exactement cette erreur. -
Dans la console, et répertoire sans espace effectivement.
Le makefile était associé à l'exemple du programme C, projet d'exemple que j'ai téléchargé sur le site officiel de la caméra que je souhaite programmer, cmucam.org.
Je vais essayer de compiler avec gcc, oui. -
Hum, beaucoup d'erreurs avec gcc. Mon makefile est-il nécessaire avec ce type de compilation ou seulement avec make ? Peut etre a-t il été mal construit..
-
le makefile ne sert qu'à make.
après un rapide coup d'oeil, il semble que arm soit relatif à la cross compilation.
Si c'est ce que tu veux faire, ok. Sinon, il y a des chance que tu ais choisi les mauvais paquets lors de ton installation.
Si tu veux seulement compiler un programme C sous Windows, essai plutôt mingw à la place de cygwin.
Essai de compiler un hello world.
Cygwin est un programme windows, donc essaye une solution windows : réinstalle tout. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Nan jsui sur un PC au boulot ( en stage ^^ ), pas possible :\
Euh ouais tkt c'est bien ce genre de compilation que je veux, pour ça que j'ai choisi ces paquets précisément ;)
Et justement, c'est le hello world que j'essaie de compiler :s
Mais quels changements à utiliser MinGW ?
==>
J'ai réussi en téléchargeant les packages ARM à partir du web, et non pas du setup de Cygwin (:
Mais j'obtiens un : No rule to make target... Stop.
Ce n'est pas un problème de permissions, je suis en Administrateur..
Avez-vous une idée ?-
-
le makefile est celui ci, qui réfère vers le suivant mis plus bas
# Makefile for a cc3 project
# C files to compile
CSOURCES=main.c
# header files
INCLUDES=
# header files
LIBS=cc3-ilp
# the name of this project
PROJECT=hello-world
# the makefile is useless without the next line!
include ../../include/common.mk
# Copyright 2006 Anthony Rowe and Adam Goode
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# set hal if not given by "hal=____"
#hal=virtual-cam
ifeq ($(strip $(hal)),)
hal=lpc2106-cmucam3
endif
INCLUDES += ../../include/cc3.h
HALDIR=../../hal/$(hal)
# include definitions (compiler, options, etc)
include $(HALDIR)/defs.mk
ifneq ($(strip $(V)),1)
VV=@
endif
OBJDIR=$(HALNAME)_buildfiles
OBJS=$(patsubst %.c, $(OBJDIR)/%.o,$(CSOURCES))
# decide if we are building a project or a lib
ifneq ($(strip $(PROJECT)),)
item=$(PROJECT)_$(HALNAME).hex
else
PROJECT=$(LIB)
item=lib$(PROJECT)_$(HALNAME).a
endif
# targets
all: $(item)
$(PROJECT)_$(HALNAME).hex: $(PROJECT)_$(HALNAME)
@echo " OBJCOPY $@"
$(VV)$(OBJCOPY) -O ihex $< $@
$(VV)$(SIZE) $<
LIBFILES=$(foreach lib,$(LIBS),../../lib/$(lib)/lib$(lib)_$(HALNAME).a)
LIBDIRS=$(foreach lib,$(LIBS),../../lib/$(lib))
LIBARGS=$(foreach lib,$(LIBS),-l$(lib)_$(HALNAME))
# the whole-archive stuff is needed, because we need to include
# the syscalls -- gc-sections will eliminate useless symbols
$(PROJECT)_$(HALNAME): $(OBJS) $(HALDIR)/$(HALLIB) $(LIBFILES)
@echo " CC $@"
$(VV)$(CC) -o $@ $(OBJS) -L$(HALDIR) \
$(foreach ldir,$(LIBDIRS),-L$(ldir)) \
$(LIBARGS) \
-Wl,-Map=$(PROJECT)_$(HALNAME).map \
-Wl,--cref \
-Wl,--gc-sections \
-Wl,-whole-archive \
-lhal-$(HALNAME) \
-Wl,-no-whole-archive \
$(LDFLAGS)
$(OBJDIR):
@echo " MKDIR $@"
mkdir $@
$(OBJS): $(OBJDIR)/%.o : %.c $(INCLUDES) | $(OBJDIR)
@echo " CC $@"
$(VV)$(CC) $(CFLAGS) $(foreach ldir,$(LIBDIRS),-I$(ldir)) -o $@ -c $<
# if LIB = something
lib$(PROJECT)_$(HALNAME).a: $(OBJS)
@echo " AR $@"
$(VV)$(AR) rs $@ $^
clean:
$(RM) *.hex
$(RM) *.map
$(RM) $(PROJECT)_$(HALNAME)
$(RM) $(PROJECT)_$(HALNAME).exe
$(RM) lib$(PROJECT)_$(HALNAME).a
$(RM) -r $(OBJDIR)
.PHONY: clean all
-
-
Apparemment, ce serait peut etre la version du make utilisé.. M'enfin , j'ai fait la mise à jour tout à l'heure sous Cygwin donc je pense pas, au pire on peut connaitre la version du make ?
-
Résolu. Il fallait exécuter le 'make' au répertoire racine qui contient le dossier 'projects', et non pas un 'make' pour chaque projet :D