Savoir compiler ou switcher de l'autre côté ?

Nathalex

Membre expert
Club iGen
8 Juin 2001
2 385
254
50
Dans l'Ain, pas trop loin de Lyon
Salut tout le monde !

Là, j'ai vraiment besoin de votre aide....

Je suis super nul-débutant-ignare dans les domaines UNIX - développement (à tel point que je masquais cette section du forum, c'est dire).

En deux mots, voilà mon histoire : pour les besoins de ma thèse, j'ai eu besoin de logiciels de calcul numérique et d'un module externe nommé Dynare. Pendant cette période, je l'utilisais sur les serveurs de la fac via MS Remote Desktop Access, c'était nickel : rien ne tournait sur l'iBook et je pouvais me passer d'un PC.

Ces belles années sont maintenant terminées mais je voudrais continuer à utiliser DYNARE d'une manière ou d'une autre sans avoir à acheter de PC.

Officiellement, des solutions existent puisque Dynare tourne sous UNIX sur Matlab ou Scilab. Vu le prix du premier, je me suis tourné vers le second. Installation de Fink, puis de Scilab, assez fier de m'être aventuré si loin dans le côté UNIX de mon mac
wink.gif


Mais les problèmes ne faisaient en fait que commencer puisque, pour UNIX, Dynare n'est livré qu'en fichiers sources qu'il faut soit même compiler. Et là, je patauge....

J'ai récupérer les sources auprès de l'auteur et avant de lui poser des questions plus spécifiques à son produit, je voudrais m'assurer d'avoir saisi les bases....

Il y a un makefile dans le dossier. Ce fichier est exécutable mais quand je le lance, il se passe pas grand chose à part des messages d'erreur.
En le regardant de plus près, j'ai cru comprendre que je n'avais pas besoin de tout (puisque les sources servent pour obtenir l'exécutable pour Scilab mais aussi pour Gauss et Matlab). J'ai donc tapé dans le terminal les lignes qui semblaient utiles à mon but : obtenir un dynare_s.exe

Mais, j'ai des messages d'erreur pour certaines parties, l'option -mno-cygwin après gcc n'a pas l'air de lui plaire.... etc....

Bref, quelqu'un pourrait me tirer d'affaire et me dire si je suis complètement à côté de la plaque ?

Je veux continuer à utiliser mes macs !!!!!!!!!

Un grand merci d'avance

Alexis
 
Bienvenue dans le monde de la ligne de commande
laugh.gif


Normalement, il y a plusieurs fichiers qui peuvent t'intéresser dans les sources et notamment les fichiers INSTALL et/ou README, qui contiennent généralement des instructions de compilation et/ou d'installation ainsi que les options qu'il est possible de passer à configure.

Et j'en viens à mon deuxième point :
en général, avant de faire le make, il faut faire exécuter un ./configure dans le répertoire des sources, ./configure va réunir toutes les informations sur ta configuration et adapter ensuite le Makefile. Si tu n'as pas fait cette étape, il est probable que le Makefile ne soit pas valide, ce qui explique les erreurs que tu rencontres ensuite.
Mais tout ça devrait être expliqué dans le README ou le fichier INSTALL...

Si après le ./configure ne permet pas d'obtenir un Makefile correct, ça devient beaucoup plus pénible, mais on en est pas encore là
laugh.gif


Bob
 
Bon en fait, j'ai jeté un coup d'oeil sur tes sources, et il y a vraiment le minimum syndical... voire un peu moins...

L'auteur s'est contenté de faire un makefile qui compile sur sa machine, mais ça va pas beaucoup plus loin...

Effectivement comme tu l'avais remarqué, l'option -no-cygwin n'est pas acceptée par gcc (pour info, cygwin est un environnement GNU pour Windows, il permet donc de faire tourner Emacs, XFree, gcc etc sous Windows), en la retirant (dans toutes les lignes du Makefile où elle apparaît), j'ai beaucoup de warnings mais ça compile... Je ne dis pas que ça marche ensuite, je n'ai pas testé, mais ce serait pas impossible...

Bob
 
Bobbus a dit:
Bienvenue dans le monde de la ligne de commande
laugh.gif


Normalement, il y a plusieurs fichiers qui peuvent t'intéresser dans les sources et notamment les fichiers INSTALL et/ou README, qui contiennent généralement des instructions de compilation et/ou d'installation ainsi que les options qu'il est possible de passer à configure.


Merci de ce message de bienvenue !
Be, le problème, en fait, est qu'il n'y a aucune instruction d'installation
frown.gif
(j'ai mis le lien des sources dans mon premier message).
J'avais l'impression qu'elles étaient dans le makefile avec des lignes du style :

d_tab.o: d_tab.c
gcc -mno-cygwin -g -c -DYYDEBUG=1 d_tab.c

Que j'interprétais de la manière suivante : pour obtenir le fichier d_tab.o, il faut le fichier d_tab.c que l'on compile en tapant la ligne correspondante dans le terminal....

Mais comme je disais, je suis peut-être complètement à côté de la plaque !!!
 
Nathalex a dit:

d_tab.o: d_tab.c
gcc -mno-cygwin -g -c -DYYDEBUG=1 d_tab.c

Que j'interprétais de la manière suivante : pour obtenir le fichier d_tab.o, il faut le fichier d_tab.c que l'on compile en tapant la ligne correspondante dans le terminal....

Mais comme je disais, je suis peut-être complètement à côté de la plaque !!!

Non, non, c'est exactement ça. Tu peux aussi supprimer le -g dans tout le makefile, c'est pour pouvoir debugger les programmes que tu compiles.

Bob
 
OK, je te remercie mille fois !!
Je vais refaire des essais avec les bonnes options et au moins, j'ai une base pour poser des questions à l'auteur.... avant qu'il ne parte en vacances !!!
laugh.gif
 
Bon, je me permets de revenir à la charge
wink.gif


Comme il me l'a été signalé l'option no-cygwin serait pour Windows, donc je peux la laisser tomber !

Mais l'option était -mno-cygwin : il faut que je laisse l'option -m quand même ?

Par ailleurs, je veux bien aussi laisser tomber l'option -g mais dans ce cas, laisser -c provoque des erreurs....

Que veulent dire les options -m, -g, -c ?

Parce que je suis pas loin du but, j'ai bien créé un dynare_s.exe qui a l'air de lancer des trucs c'est pas encore ça....

Normalement, la syntaxe est dynare_s.exe mon_fichier. Quand je ne précise pas de nom de fichier, il en réclame un (c'est bon signe) mais quand j'en mets un, le message est cette fois "invalid filename"

Bref, je fais encore appel à vous
wink.gif
 

Pour faire court :
- -mno-cygwin est à comprendre comme une seule option de gcc
- -g est l'option qui ajoute à l'exécutable du code de débuggage. Si on a compilé avec cette option, on peut ensuite faire tourner le programme dans gdb (le débuggueur GNU) pour l'observer pendant qu'il tourne, le faire avancer pas à pas, etc.
Normalement si on n'utiliser pas gdb, compiler avec ou sans ne change rien si ce n'est un exécutable plus léger et plus rapide (plus ou moins sensiblement suivant la taille et le type du code)
- l'option -c dit à gcc de faire la compilation et l'assemblage, mais pas l'édition de lien. C'est un peu compliqué à expliquer, mais en gros, si tu as un programme dont le code est séparé en plusieurs fichiers a1.c, a2.c, a3.c, principal.c où principal fait appel aux trois précédents pour certaines fonctions, tu vas faire
gcc -c a1.c
gcc -c a2.c
gcc -c a3.c
gcc -c principal.c
gcc -o monexecutable a1.o a2.o a3.o principal.o

On compile d'abord chaque fichier, puis on les 'lie' dans un seul exécutable. Et puisqu'on est en aux options de gcc l'option -o permet de préciser le nom du fichier en sortie. Par défaut, ça va être le même fichier en .o si on utilise -c, sinon ce sera a.out)

Valà valà, j'espère avoir été clair

Bob