gpt4 book ai didi

c - 未定义对 `ftdi_init' 的引用

转载 作者:行者123 更新时间:2023-12-04 18:27:40 26 4
gpt4 key购买 nike

我过去使用过libftdi并使用以下命令进行编译:

gcc -lftdi -o i2csend i2csend.c

一切都很顺利。今天,在 Ubuntu 12.10 上,我遇到了许多错误,例如 对 `ftdi_init' 的 undefined reference

我知道 libftdi 已重命名为 libftdi1,因此我尝试使用 -lftdi1 执行相同的命令并收到错误:

/usr/bin/ld: cannot find -lftdi1
collect2: error: ld returned 1 exit status

谁能解释一下为什么吗?

最佳答案

您通常不应直接指定外部包的库名称。

最好使用打包系统的帮助程序,即 pkg-config ,像这样:

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

请注意,这假设包名称为 libftdi1pkg-config的数据库;我不知道如何可移植地验证这一点。您可以运行pkg-config --list-all | grep ftdi来找出答案。

将库部分( -l 选项)保留在命令行末尾通常是一个好主意,上面就是这样做的。分解出 CFLAGS 会更干净一些。部分,但这需要重复命令:

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

在这里,我使用双空格来分隔命令行的逻辑部分,以提高清晰度。

关于c - 未定义对 `ftdi_init' 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14872888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com