[英]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.