Utiliser Cygwin pour compiler un programme C; Erreur d'exécution
Question
Je suis inscrit à un cours de maîtrise en informatique. Le cours utilise C et l'instructeur veut que nous utilisions Cygwin pour compiler des programmes si nous utilisons Windows.
J'ai téléchargé et installé Cygwin et je me suis assuré d'avoir installé le Compilateur GCC .
Mais je ne sais pas où aller d'ici. J'ai besoin de compiler un fichier source unique contenant un élément de base.
#include <stdio.h>
Supposons que le fichier se trouve sur mon bureau (ce n’est pas le cas, mais à des fins d’argument). Comment naviguer sur le bureau à partir du shell bash? Je suppose qu'une fois que j'ai navigué jusqu'au bon emplacement dans Bash, j'exécute simplement:
gcc myProgram.c -o myProgram
Mise à jour : j'ai suivi la procédure décrite ci-dessous pour compiler le programme. Je vous en remercie. Mais quand j'exécute le binaire résultant, j'obtiens ce qui suit. Comment puis-je compiler ou exécuter ce programme afin que je ne reçois pas l'erreur? Encore merci.
Cette application n'a pas pu démarrer car cygwin1.dll n'a pas été trouvé. Réinstaller l'application peut résoudre ce problème.
La solution
lorsque vous démarrez dans cygwin, vous êtes dans votre $ HOME, comme dans unix en général, ce qui correspond par défaut à c: / cygwin / home / $ YOURNAME. Donc, vous pouvez tout mettre là.
Vous pouvez également accéder au lecteur c: depuis cygwin via / cygdrive / c / (par exemple, / cygdrive / c / Documents et Paramètres / votre nom / Bureau).
Autres conseils
Concernant votre question mise à jour sur le cygwin1.dll manquant .
À partir de la vérification du terminal Cygwin,
ls /usr/bin/cygwin1.dll
S'il n'est pas présent (j'en doute), votre installation n'est pas correctement effectuée.
Vérifiez ensuite votre chemin avec,
echo $PATH
Ceci donnera à :
une liste de chemins séparée. Il DOIT contenir / usr / bin
. Si vous trouvez qu'il manque l'ajouter avec,
export PATH=/usr/bin:$PATH
Enfin,
- J'espère que vous utilisez Cygwin depuis le terminal cygwin (la petite icône verte + noire installée avec Cygwin) ou MinTTY (si vous l'avez installé).
- Et vous n’avez pas déplacé le fichier EXE compilé sur une autre machine sur laquelle Cygwin n’est pas installé (si vous le faites, vous devrez porter le fichier cygwin1.dll sur cette machine. Conservez-le dans le même dossier que le dossier. EXE compilé).
Recherchez (c'est-à-dire cd
à)
/cygdrive/c/
qui sera généralement votre C: \
Regardez également Utilisation de Cygwin , le Introduction de Lifehacker (juin / 2006) et, ce < a href = "http://www.physionet.org/physiotools/cygwin/" rel = "nofollow noreferrer"> page biomed sur PhysioNet .
En ce qui concerne l'erreur cygwin1.dll
non trouvée, une solution que j'utilise depuis au moins 8 ans consiste à ajouter les répertoires Cygwin bin à la fin de mon % PATH% dans mon ordinateur - > Propriétés - > Avancé - > Variables d'environnement. Je les ajoute à la fin du chemin afin que, dans mon travail normal, ils soient recherchés en dernier, minimisant ainsi le risque de conflits (en fait, je n’ai eu aucun problème de conflit depuis tout ce temps).
Lorsque vous appelez Cygwin Bash Shell, ces répertoires sont préfixés au % PATH%
afin que tout fonctionne comme prévu dans cet environnement également.
Lorsqu'il n'est pas exécuté dans le shell Cygwin, mon % PATH%
est:
Path=c:\opt\perl\bin; \
...
C:\opt\cygwin\bin; \
C:\opt\cygwin\usr\bin; \
C:\opt\cygwin\usr\local\bin;
Ainsi, par exemple, le perl d'ActiveState Perl est trouvé en premier lorsque je ne suis pas dans un shell Cygwin, mais le perl Cygwin est trouvé lorsque je travaille dans le shell Cygwin.
Pour résumer, voici quelques commandes permettant de naviguer dans un répertoire et de compiler du code à l'aide de Cygwin et Windows Vista:
- Démarrer un shell Cygwin.
-
À l'invite, utilisez
cd
pour accéder au répertoire approprié:$ cd / cygdrive / c / Utilisateurs / nate / Desktop
-
Utilisez
ls
pour répertorier les fichiers dans le répertoire:$ ls
prog.c
-
Utilisez la commande
gcc
pour compiler un fichier dans ce répertoire:$ gcc prog.c -o prog
-
Si vous ne voyez aucune erreur, vous devriez pouvoir exécuter le programme résultant:
$ ./prog
Mise à jour:
Pour le " Cygwin1.dll introuvable
" erreur, j'aime la réponse de Nik. Vous pouvez également consulter ce post relatif à cygwin1.dll non trouvé , qui suggère d'ajouter c: \ cygwin \ bin \
à votre PATH Windows.
Il existe des instructions sur la modification de la variable Windows PATH pour Windows XP, et sur Vista, je pense que c'est similaire.
- Accédez au Panneau de configuration - > Système
- Sélectionnez Paramètres système avancés
- Cliquez sur l'onglet Avancé .
- Cliquez sur Variables d'environnement
- Sous Variables système , recherchez l'entrée Chemin et cliquez sur Modifier .
- Ajoutez
c: \ cygwin \ bin
à la liste, en veillant à le séparer de tout élément précédent par un point-virgule
Si vous n’êtes pas à l'aise avec bash, vous pouvez continuer à travailler dans un shell de commande Windows classique (par exemple, DOS).
Pour que cela fonctionne, vous devez ajouter C: \ cygwin \ bin (ou votre alternative locale) à la variable Windows PATH.
Ceci fait, vous pouvez: 1) Ouvrez un shell de commande (DOS) 2) Modifiez le répertoire à l'emplacement de votre code (c :, puis cd path \ to \ file) 3) gcc monProgramme.c -o monProgramme
Comme indiqué dans la réponse de nik, le "Utilisation de Cygwin" la documentation est un excellent endroit pour en savoir plus.
Le chemin Windows C: \ src
sous cygwin devient / cygdrive / c / src
Si vous ne faites que gcc program.c -o programme -mno-cygwin, la compilation sera parfaite et vous n'aurez pas besoin d'ajouter cygwin1.dll à votre chemin et vous pourrez simplement aller de l'avant et distribuer votre exécutable sur un ordinateur. qui n’a pas installé cygwin et il fonctionnera toujours. J'espère que cela aide
Compiler votre programme C avec Cygwin
Nous allons utiliser le compilateur gcc sur Cygwin pour compiler des programmes.
1) Lancez Cygwin
2) Accédez au répertoire créé pour cette classe en tapant
.cd c: / windows / desktop
3) Compilez le programme en tapant
gcc monProgramme.c -o monProgramme
la commande gcc appelle le compilateur gcc pour compiler votre programme C.
Il vaudrait peut-être mieux éditer un fichier dans le shell cygwin. Normalement, il possède un répertoire utilisateur par défaut lorsque vous le démarrez. Vous pouvez éditer un fichier à partir du shell en faisant quelque chose comme "vi somefile.c". ou "emacs somefile.c". En supposant que vi ou emacs soient installés dans cygwin.
Si vous souhaitez créer un fichier sur votre bureau, vous devez accéder à un chemin similaire (sous XP) à "/ cygwindrive / c / Documents \ et \ Settings / Frank / Desktop". (Si la mémoire est utilisée correctement). Cd juste à ce chemin, et exécutez votre commande sur le fichier.
Cygwin est très cool! Vous pouvez compiler des programmes à partir d'autres systèmes (Linux, par exemple), et ils fonctionneront . Je parle même de programmes de communication ou de serveurs Web.
Voici un truc. Si vous consultez votre fichier dans l’explorateur de fichiers Windows, vous pouvez taper " cd " dans vos fenêtres bash, faites glisser la barre d'adresse de l'explorateur vers la fenêtre cygwin et le chemin complet sera copié! Cela fonctionne également dans le shell de commande Windows.
En outre: While "cd / cygdrive / c" est le chemin formel, il acceptera également " cd c: " comme raccourci. Vous devrez peut-être faire cela avant de faire glisser le reste du chemin.
Le fichier stdio.h doit être trouvé automatiquement, comme sur un système conventionnel.
Ce fichier (cygwin1.dll) est une dépendance de cygwin similaire à qt dependency. vers le dossier de votre programme .Cela est également nécessaire de s’exécuter sur un autre ordinateur qui n’a PAS cygwin!