J'essaie de traduire mon fichier Edit: p> Lorsque je tape .spl code> dans un fichier C (car il n'y a pas de compilateur). J'ai un exemple de fichier "Hello World" .SPL, et j'ai téléchargé le Langue de programmation Shakespeare
.tar code> et l'extrait, mais je ne sais pas quoi faire ensuite. Je ne peux pas sembler trouver des instructions dans aucune documentation. Peut-on aider?
make -f "Makefile" code>, je reçois la sortie suivante: p>
bison --verbose -d grammar.y
gcc -O2 -Wall -c grammar.tab.c
gcc -O2 -Wall -c makescanner.c
gcc makescanner.o -O2 -Wall -o makescanner
./makescanner include > scanner.l
flex -Cem -t scanner.l > scanner.c
scanner.l:600: warning, rule cannot be matched
gcc -O2 -Wall -c scanner.c
<stdout>:5823: warning: âyyunputâ defined but not used
gcc -O2 -Wall -c strutils.c
gcc grammar.tab.o scanner.o strutils.o -O2 -Wall -lfl -o spl2c
ld: library not found for -lfl
collect2: ld returned 1 exit status
make: *** [spl2c] Error 1
5 Réponses :
Vous souhaitez exécuter le fichier appelé "Makefile" avec la commande alors vous pouvez utiliser Juste au cas où, mettez les fichiers dans Vous pouvez commenter si vous voulez plus d'informations, j'espère que cela aide (ou même fonctionne). P> make -f "Makefile" code>, et si vous avez les commandes
ar code>
gcc code>
flex code>
ranlib code>
goudron code>
bison code>
Dans votre terminal, ça devrait aller.
Vous pouvez tester si vous avez une commande en tapant son nom, puis - Aide code> dans votre terminal. p>
spl2c code> (qui est apparu maintenant dans votre dossier SPL) avec votre code pour créer un fichier .C, que vous pouvez ensuite placer dans
gcc code> avec Spl.h va faire un fichier .o, lequel vous pouvez enfin mettre dans
gcc code> avec libspl.a pour créer un programme final, compilé. P>
gcc code> comme ceci:
PREMIER PASS: PROGRAMME DE GCC.C SPL.H -O PROGRAMME.O CODE>
Second Pass: GCC PROGRAMNAME.O LIBSPL.A -O COMPOREDPROGRAMNOME CODE> P>
Voir Modifier dans l'article d'origine s'il vous plaît. La ligne de fond est lorsque je tape SL2C après avoir exécuté le make -f "Makefile" I Obtenir une erreur "Commande introuvable".
@Skyler -lfl code> signifie
libfl. * Code>. Êtes-vous sûr que vous avez
lex code> (comme dans gnu flex) installé? Si vous faites, peut-être réinstaller cela aiderait? Ou Redownload
libfl. * Code>? Vous pouvez rechercher
libfl-dev code> pour le trouver. Ou juste Redownload Lex .
D'ACCORD. J'ai SPL2C de travailler. Après avoir couru ./spl2x
Si vous utilisez un Mac, apparemment OSX n'inclut pas les bibliothèques nécessaires pour Flex, et c'est ce qui est à l'origine de l'erreur: Toutefois, Il est censé être un remplacement équivalent que vous pouvez utiliser, vous aurez juste besoin de changer une ligne dans le maquillage. Vous devriez changer cette ligne: p> à ceci: p> après cela, essayez de faire de la marche et de voir si Vous obtenez de meilleurs résultats. P> p> Bibliothèque non trouvée pour -lfl code>
Voir mon dernier commentaire à la réponse ci-dessus, vous pouvez peut-être vous aider? Merci
L'erreur:
ld: bibliothèque introuvable pour -lfl code> p> BlockQuote>
signifie que vous avez manqué la bibliothèque qui fait partie de Bibliothèque Flex . p>
Pour vérifier si vous avez déjà FLEX Bibliothèque installée, vous pouvez le rechercher à l'aide de localiser: p>
xxx pré>
osx strong> p> Si vous ne l'avez pas, vous pouvez installer INSTALL FLEX (si vous utilisez Brew ): p>
xxx pré> Si vous rencontrez toujours les problèmes, vous pouvez essayer de transmettre les variables suivantes manuellement pendant la fabrication, par exemple: p>
brew install shakespeare -v
En réalité, j'ai eu le même problème sur OS X Yosemite.
brew install flex
Le problème est que les auteurs ont décidé de relier leur programme par rapport à la bibliothèque de libber la plus inutile, qui n'est presque jamais nécessaire, donc non inclus dans certaines distributions Flex (en particulier, celui sur MacOS). P>
Il s'avère que libfl n'a que deux fonctions définies dans IT - Il s'avère que vous pouvez corriger le code assez facilement: P>
Modifier le fichier Modifier le Maintenant, vous devriez être capable de le construire (bien que vous deviez peut-être supprimer le fichier principal code> et
yywrap code>. Le
principal code> dans la liblfl est à peu près jamais utilisé, et le
yywrap (code> peut-on aussi bien, car tout ce qu'il fait est renvoyer
1 code>. p>
Inclure / user_code_top.metaflex code> et ajoutez la ligne
% option noyywrap code> à la fin. p> li>
Makefile code> et supprimer le
-LFL code> de la ligne de liaison (juste chercher la chaîne
-Lfl code> et supprimez ces 4 caractères où qu'ils apparaissent) p> li>
ol>
scanner.l code> si vous avez précédemment manqué de faire et obtenez l'échec, car le fabricant ne parvient pas à détecter que nécessaire être reconstruit après avoir édité le fichier Metaflex). P>