2012-12-26 43 views
7

我已經學習使用的Flex(詞法分析儀)和我已經使用下面的命令編譯:撓曲:未定義參考`yywrap」僅編譯時/分別連接

gcc -lfl -o test lex.yy.c

一切都很好。但是,我想將它與其他文件鏈接,所以我編譯和

gcc -c lex.yy.c

其次

gcc -lfl -o test lex.yy.o

單獨鏈接,但GCC告訴我,有一個未定義的引用yywrap()。那麼,這裏發生了什麼?

我使用Flex 2.5.35,GCC 4.7.2和ld 2.22

+5

您是否嘗試在末尾添加「-lfl」而不是開始? – Raj

+0

工作。謝謝! – Flukiluke

+0

好吧,我會將其作爲答案發布。 – Raj

回答

15

末,而不是開頭添加-lfl

1

另外,如果你不想使用圖書館,只是#define yywrap() 1在.L文件,或者提供一個yywrap()方法,返回1

它的記錄。

1

我的解決辦法是:

命令和apt-get安裝柔性

+4

請解釋如何在沒有安裝flex的情況下生成lex.yy.c文件。 – EJP

1

使用gcc lex.yy.c -ll。否則它會產生一個未定義的參考yywrap

0

我創建了一個文件addon.c

int yywrap (void) 
{ 
    return 1; 
} 

並把它添加到目標。