web-dev-qa-db-fra.com

Utiliser Cygwin pour le compilateur un programme C; Erreur d'exécution

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 avec un include de base.

#include <stdio.h> 

Supposons que le fichier se trouve sur mon bureau (ce n'est pas le cas, mais à des fins de discussion). Comment naviguer sur le bureau à partir du shell bash? Je suppose qu'une fois que j'ai navigué au bon emplacement dans bash, j'exécute simplement:

gcc myProgram.c -o myProgram

Mise à jour: Suite aux différentes instructions données ci-dessous, j'ai pu 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.

This application has failed to start because cygwin1.dll was not found. Re-installing the application may fix this problem.

15
Frank V

lorsque vous démarrez dans cygwin, vous êtes dans votre $ HOME, comme dans unix en général, qui correspond à c:/cygwin/home/$ VotreNom par défaut. 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).

14
David Cournapeau

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.

Ensuite, vérifiez votre chemin avec,

echo $PATH

Cela donnera une liste de chemins séparée par :. Il DOIT contenir /usr/bin. Si vous trouvez qu'il manque l'ajouter avec,

export PATH=/usr/bin:$PATH

Finalement, 

  • 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 fichier EXE compilé. .
9
nik

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:

  1. Démarrer un shell Cygwin.
  2. À l'invite, utilisez cd pour accéder au répertoire approprié: 

    $ cd/cygdrive/c/Utilisateurs/nate/Desktop

  3. Utilisez ls pour répertorier les fichiers du répertoire:

    $ ls

    prog.c

  4. Utilisez la commande gcc pour compiler un fichier dans ce répertoire:

    $ gcc prog.c -o prog

  5. Si vous ne voyez aucune erreur, vous devriez pouvoir exécuter le programme résultant:

    $ ./prog

Mettre à jour:

Pour l'erreur "Cygwin1.dll not found", j'aime bien la réponse de Nik. Vous pouvez également consulter ce post relatif à cygwin1.dll introuvable , qui suggère d’ajouter c:\cygwin\bin\ à votre PATH Windows. 

Il y a des instructions sur la façon de changer la variable Windows PATH pour Windows XP et sur Vista, je pense que c'est similaire.

  1. Allez dans le Panneau de configuration -> Système
  2. Sélectionnez Paramètres système avancés
  3. Cliquez sur l'onglet Avancé
  4. Cliquez sur Variables d'environnement
  5. Sous Variables système, recherchez l'entrée Chemin et cliquez sur Éditer.
  6. Ajoutez c:\cygwin\bin à la liste, en veillant à le séparer des éléments précédents avec un point-virgule.
4
Nate Kohl

En ce qui concerne l'erreur cygwin1.dll introuvable, une solution que j'utilise depuis au moins 8 ans consiste à ajouter les répertoires bin Cygwin à la fin de mon %PATH% dans Poste de travail -> Propriétés -> Avancées -> Variables d'environnement. Je les ajoute à la fin du chemin afin que, dans mon travail normal, elles soient recherchées en dernier, ce qui minimise les risques de conflits (en fait, je n'ai eu aucun problème de conflit depuis tout ce temps).

Lorsque vous appelez le shell Cygwin Bash, ces répertoires sont ajoutés au préfixe %PATH% afin que tout fonctionne comme prévu dans cet environnement.

Lorsqu'il n'est pas exécuté dans Cygwin Shell, 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, ActiveState Perl Perl est trouvé en premier lorsque je ne suis pas dans un shell Cygwin, mais Cygwin Perl est trouvé lorsque je travaille dans le shell Cygwin.

4
Sinan Ünür

Rechercher (c'est-à-dire cd à)

/cygdrive/c/

ce sera généralement votre C:\


Regardez également Using Cygwin , l'introduction de Lifehacker (juin/2006) et cette page de biomed sur PhysioNet .

4
nik

Si vous n’êtes pas à l'aise avec bash, vous pouvez continuer à travailler dans un shell de commande Windows standard (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 une commande (DOS) Shell 2) Modifiez le répertoire à l'emplacement de votre code (c:, puis cd path\to\file) 3) gcc monProgramme.c -o monProgramme

Comme mentionné dans la réponse de nik, la documentation "Utilisation de Cygwin" est un endroit formidable pour en savoir plus.

2
Tim Henigan

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. Vous pourrez simplement aller de l'avant et distribuer votre exécutable sur un ordinateur qui ne fonctionne cygwin n’a pas été installé et il fonctionnera toujours. J'espère que cela t'aides

1
HackTalk

Le chemin Windows C:\src sous cygwin devient /cygdrive/c/src

1
devdimi

Ce fichier (cygwin1.dll) est une dépendance de cygwin similaire à qt dependency.vous devez copier ce fichier et les fichiers similaires qui apparaissent dans de tels messages un autre ordinateur qui n'a pas cygwin!

0
Maysam Bagheri

Compiler votre programme C avec Cygwin

Nous allons utiliser le compilateur gcc sur Cygwin pour compiler des programmes. 

1) Lancer Cygwin

2) Accédez au répertoire que vous avez créé pour cette classe en tapant

cd c:/windows/desktop

3) Compiler le programme en tapant

gcc monProgramme.c -o monProgramme

la commande gcc appelle le compilateur gcc pour compiler votre programme C. 

0
joe

Vous feriez peut-être mieux de modifier un fichier dans cygwin Shell. Normalement, il a un répertoire utilisateur par défaut lorsque vous le démarrez. Vous pouvez éditer un fichier depuis le 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 archiver sur votre bureau, vous devrez choisir un chemin similaire (sous XP) à "/ cygwindrive/c/Documents\et\Settings/Frank/Desktop" (si la mémoire est correctement utilisée). Juste cd à ce chemin, et exécutez votre commande sur le fichier.

0
Jay Atkinson

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 regardez votre fichier dans l'explorateur de fichiers Windows, vous pouvez taper "cd" dans vos fenêtres bash, puis faire glisser la barre d'adresse de l'explorateur dans la fenêtre cygwin et le chemin complet sera copié! Soit dit en passant, cela fonctionne également dans le shell de commande Windows. 

Aussi: Bien que "cd/cygdrive/c" soit 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.

0
gbarry