Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/08/2006, à 23:41

choufla

Programmation en C

Salut tout le monde
je viens tout recement de passer a Ubuntu parce qu'il métait impossible d'utiliser un autre environement(mandrave, kaella...)sur mon ordinateur portable.
Je suis etudiant et je amener a faire de la programmation en language C pour faire des simulation numérique. Hors j'ai un petit probleme, j'ai réussi a mettre le compilateur gcc en marche et j'ai compilé mon programme (il s'appel prog.c) dans un terminal,
je le compile:    gcc prog.c -o prog -lm   
la compilation se passe sans probleme mais au moment de le lancer dans le terminal celui-ci m'affiche:    bash: prog : commande introuvable.
Quelqu'un peut-il m'expliquer pourquoi il ne trouve pas ce nouveau programme, de plus il m'est indispensable de passer par le terminal car il y a des parametres a rentrer pour le bon fonctionnement du programme?

Merci beaucoup de votre aide

Hors ligne

#2 Le 26/08/2006, à 23:50

lunique

Re : Programmation en C

Donc pour commencer, je ne sais pas quel etait le probleme sur les autres environnement, mais t'aurai surement pu les faire tourner juste en changeant de version de noyau ou d'option au boot.

Sinon pour ce qui est de lancer des programmes a partir d'un "terminal" :
la variable PATH contient le chemin des dossier dans lequel le terminal cherche lorsque tu rentre un nom de commande. Comme a premiere vue, tu as du laisser la configuration par defaut, le repertoire courant n'y est pas. Donc tu dois rentrer le chemin vers le programme et non pas juste son nom. Ce qui donne si tu es deja dans le bon repertoire

./prog

Sinon, il y a un fichier qui donne les commande a faire dés que tu lance xterm ( je ne sais plus lequel est-ce ? ) il suffit d'y rajouter

PATH="$PATH:."

et le repertoire courant sera consulté lorsque tu rentrera un nom de programme.

edit. si tu fait

PATH=".:$PATH

il cherchera d'abord dnas le repertoire courant puis ensuite seulement dnas les repertoires par defaut

Dernière modification par lunique (Le 26/08/2006, à 23:51)

Hors ligne

#3 Le 27/08/2006, à 00:21

choufla

Re : Programmation en C

alors je vais etre encore plus precis sur se que j'ai fais.
dans les autres environements (kaella-knoppix, mandrave et sur un autre pc) pour lancer un programme, que je venais de compilé, a partir du terminal ne me posait aucun probleme.
Bon alors je fais un programme en C le fichier (en  .c) je le met dans un directory et lorsque je le compile, je le compile dans le meme directory, le chemin reste le meme. Maintenant je suis toujours placé dans ce directory et je lance le programme (qui est devenu un executable) en tapant "prog" a partir du terminal et il m'affiche:       bash: prog : commande introuvable
Hors lorsque je vais directement cliquer dessus (en passant par l'explorateur) le programme se lance (donc il marche) mais il manque tous les parametres a prendre en compte pour son bon fonctionnement (il faut les rentrer dans le terminal) c'est un programme précis pour faire une simulation numérique que j'ai créé moi meme.
Merci

Dernière modification par choufla (Le 27/08/2006, à 09:16)

Hors ligne

#4 Le 27/08/2006, à 00:33

lunique

Re : Programmation en C

donc je confirme ce que je dit.
Soit tu fait un

PATH="$PATH:/repertoire/ou/est/le/prog

et ensuite tu pourra taper

prog

quelquesoit le repertoire dans lequel tu sera, sa lancera ton programme
ou alors tu tapes le chemin vers ton prog

/home/toto/programmation/prog
ou
programmation/prog
ou encore et c'est ce cas qui t'interessera tant que tu sera en developpement ^ ^
./prog (et j'insiste sur le ./ si tu es dans le bon repertoire)

Dernière modification par lunique (Le 27/08/2006, à 00:34)

Hors ligne

#5 Le 27/08/2006, à 01:37

trucutu

Re : Programmation en C

Ca ne serait pas plutôt :

cc -o prog prog.c -lm

?

puis

./prog a b c ....

(vu qu'il y a des paramètres...) ?

Dernière modification par trucutu (Le 27/08/2006, à 01:39)


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#6 Le 27/08/2006, à 06:22

lunique

Re : Programmation en C

Je pense que les parametre dont il parle sont plutot des saisies au clavier ^^

Hors ligne

#7 Le 27/08/2006, à 09:44

trucutu

Re : Programmation en C

je persiste :

choufla a écrit :

Hors lorsque je vais directement cliquer dessus (en passant par l'explorateur) le programme se lance (donc il marche) mais il manque tous les parametres a prendre en compte pour son bon fonctionnement

si tu veux le lancer comme un script, cela doit être :
./prog a b c... (en étant dans le répertoire qui convient)

Sinon, c'est que le problème doit être plus subtil


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#8 Le 27/08/2006, à 09:48

kaworu

Re : Programmation en C

AHHHHHHHHH !
n'ajouter pas ton le répértoire courant dans le PATH, c'est désactivé dans bash pour des raisons de sécurité...


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#9 Le 27/08/2006, à 09:55

choufla

Re : Programmation en C

Merci
Je viens de faire l'essai avec ./prog ca marche bien. merci.
Alors maintenant j'aimerai savoir pourquoi il faut mettre la commande ./ pour pouvoir bien effuectuer la tache demandé, alors que dans knoppix cette commande ne m'était pas necessaire.

je faisais,juste cette commande sur l'autre et ca marchait:
..../moi$  gcc prog.c -o prog -lm
..../moi$  prog

Maintenant je doit faire cette commande pour que ca marche sur unbuntu.
..../moi$  gcc prog.c -o prog -lm
..../moi$  ./prog

Par ailleurs j'aimerais savoir si vous connaissez d'autre différence liée a ubuntu par rapport aux autres Linux.
Cette formulation vient elle de la dernier version de gcc ou est-elle liée a ubuntu?
Merci de votre aide

Hors ligne

#10 Le 27/08/2006, à 10:39

lunique

Re : Programmation en C

kaworu, j'aimerai bien savoir quels sont les problemes de securité avec le fait de rajouter le repertoire courant dans le PATH.

Pour la difference, je suppose que sa vient d'une difference de configuration de la variable PATH

Hors ligne

#11 Le 27/08/2006, à 11:27

abetsic

Re : Programmation en C

lunique, le problème vient du fait que si par hasard une personne mal intentionnée crée un script du nom de "sl" dans le repertoire /tmp, script qui fait plein de sales choses... et que pour une raison ou une autre tu soit amenée à aller dans le repertoire /tmp et à travailler en root, et que comble de malchance tu tapes "sl" au lieu de "ls", c'est le script qui sera executé au lieu de "sl : command not found"

C'est la raison que j'ai entendue plusieurs fois à ce sujet.

Dernière modification par abetsic (Le 27/08/2006, à 11:27)

Hors ligne

#12 Le 27/08/2006, à 15:38

jcgrini

Re : Programmation en C

lunique

que veux dire cette commande devant le programme   ./   

et pourrais tu nous dire où changer le path et le mettre definitif. on est encore novice en linux.

@+

Hors ligne

#13 Le 27/08/2006, à 16:02

abetsic

Re : Programmation en C

le ./ correspond au chemin par leque on accède au fichier "prog" . désigne le répertoire courant, et / sert de délimiteur entre le repertoire et le fichier...

Par ailleurs .. désigne le repertoire parent, donc si tu veux executer un programme qui est dans le repertoire il faut faire ../programme_du_repertoire_parent ou bien rentre le chemin complet /bidule/chouette/programme

Quoi qu'il en soit n'ajouter pas "." à votre PATH, on vous dis qu'il ne faut pas le faire, ne le faites pas. Après si vraiment taper "./" est vraiment trop dur, vous pouvez faire la modif dans votre fichier ~/.bashrc

Hors ligne

#14 Le 27/08/2006, à 17:31

jcgrini

Re : Programmation en C

merci de l'information.

c'est donc pour une question de sécurité qu'il ne faut pas ajouter "." dans le path inscrit dans le fichier ~/.bashrc.

taper ./ n'est pas compliqué quand on comprend son utilité. c'est fait maintenant merci

@+

Hors ligne

#15 Le 27/08/2006, à 19:16

skateinmars

Re : Programmation en C

Aucun rapport entre ca et gcc en passant

Hors ligne

#16 Le 30/08/2006, à 11:27

Bouazza

Re : Programmation en C

choufla a écrit :

Merci
Je viens de faire l'essai avec ./prog ca marche bien. merci.
Alors maintenant j'aimerai savoir pourquoi il faut mettre la commande ./ pour pouvoir bien effuectuer la tache demandé, alors que dans knoppix cette commande ne m'était pas necessaire.

je faisais,juste cette commande sur l'autre et ca marchait:
..../moi$  gcc prog.c -o prog -lm
..../moi$  prog

Maintenant je doit faire cette commande pour que ca marche sur unbuntu.
..../moi$  gcc prog.c -o prog -lm
..../moi$  ./prog

Par ailleurs j'aimerais savoir si vous connaissez d'autre différence liée a ubuntu par rapport aux autres Linux.
Cette formulation vient elle de la dernier version de gcc ou est-elle liée a ubuntu?
Merci de votre aide

Dans chaque distribution Linux , il est impossible d'executer un programme que si le repertoire qui le contient est dans la variable d'environnement PATH ou que si on fournit le chemin vers le programme .
./ veut dire le repertoire courant , ce n'est pas un fichier ni une commande !
Et je déconseille d'utiliser des distributions qui mettent le repertoire courant dans la variable PATH automatiquement car ça risque d'executer par exemple un autre programme dans un repertoire contenu dans PATH que le repertoire courant !
Et puis ce topic doit être dans une section en relation avec le shell ou bash wink .

Hors ligne