/ usr / bin / ld: -lfl kann nicht gefunden werden


8

Nach dem Ausführen des folgenden Befehls:

g++ lex.yy.c -lfl

Ich erhalte folgende Fehlermeldung:

/usr/bin/ld: cannot find -lfl

Wie kann ich das lösen?


1
Welche Distribution / welches Betriebssystem verwenden Sie? Wie haben Sie flex installiert (wenn Sie es verwenden)?
Mat

Antworten:


9

lex.yy.cist der Standardname der Ausgabedatei für lexden Präprozessor des lexikalischen Analysators für C (und C ++). Der Linker ( ld) sucht nach einer aufgerufenen Datei libfl.so(bei dynamischer Verknüpfung; libfl.abei statischer Verknüpfung). Dies ist die Laufzeitbibliothek, die von Lexern benötigt wird, die von Flex , einer Lex-Implementierung, generiert wurden .

Wenn Sie lex.yy.cselbst mit generiert haben flex, überprüfen Sie , ob Flex korrekt installiert ist. Zusätzlich zu der flexausführbaren Datei in Ihrem Pfad müssen Sie libfl.sound libfl.a(und libfl_pic.afalls vorhanden) in Ihrem Bibliothekssuchpfad haben (normalerweise /usr/liboder /usr/local/lib, abhängig davon, ob Flex aus einem Systempaket stammt oder nicht). Wenn Sie Flex an einem nicht standardmäßigen Speicherort haben, geben Sie den Bibliothekssuchpfad an mit -L:

~/software/flex/bin/flex mylexer.l
g++ lex.yy.c -L ~/software/flex/lib -lfl

4
Die Installation des flex-statischen Pakets löste das Problem
NPK

Mint 19.1, die Installation von Flex-Old hilft.
Jiahao Cai

3

Die Installation des flex-devel.x86_64Pakets in meiner SciOs-Distribution hat bei mir funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.