簡體   English   中英

未定義對ftdi_init的引用

[英]undefined reference to `ftdi_init'

我過去使用過libftdi,並使用以下命令進行編譯:

gcc -lftdi -o i2csend i2csend.c

一切都很好。 今天,在Ubuntu 12.10上,我遇到許多錯誤,例如undefined reference to ftdi_init的undefined reference to

我知道libftdi被重命名為libftdi1,所以我用-lftdi1嘗試了相同的命令並出現錯誤:

/ usr / bin / ld:找不到-lftdi1 collect2:錯誤:ld返回1退出狀態

誰能解釋為什么?

通常,您不應該直接指定外部軟件包的庫名。

最好使用打包系統的幫助程序,即pkg-config ,如下所示:

$ gcc -o i2csend i2csend.c $(pkg-config --cflags --libs libftdi1)

注意,這里假設軟件包名稱在pkg-config的數據庫中為libftdi1 我不確定如何便攜地進行驗證。 您可以運行pkg-config --list-all | grep ftdi pkg-config --list-all | grep ftdi找出來。

通常,將庫部分( -l選項)保留在命令行的末尾是一個好主意,如上所述。 剔除CFLAGS部分CFLAGS干凈,但這需要重復以下命令:

$ gcc $(pkg-config --cflags libftdi1)  -o i2csend  i2csend.c  $(pkg-config --libs libftdi1)

在這里,我使用雙倍空格分隔命令行的邏輯部分,以提高清晰度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM