/ 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?

NPK
quelle
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
Gilles 'SO - hör auf böse zu sein'
quelle
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.

atineoSE
quelle