我有一个使用FTDI驱动程序库的Python应用程序,它的名称为:
/usr/local/lib64/libftd2xx.so.1.4.22
我使用libc 2.27运行该应用程序时,它能够正常工作。
当我使用libc 2.32运行它时,出现以下错误:
/usr/local/lib64/libftd2xx.so: undefined symbol: stime
在查看libc发行版时,确实有与libc 2.31中的stime相关的内容,如https://lwn.net/Articles/811315/所述。
它说:
"过时函数stime不再适用于新链接的二进制文件,并且其声明已从<time.h>中删除。"
我的理解是只有“新代码”无法使用此功能进行编译/链接,但仍可使用正在使用此功能的现有库。
实际上,如果我使用以下命令在2.27和2.32中搜索stime符号,则会发现该函数存在:
2.27
root@PPL23:~# nm --demangle --dynamic --defined-only --extern-only /lib/x86_64-linux-gnu/libc-2.27.so* | grep stime
00000000000d5ee0 T stime
2.32
localhost /tmp # nm --demangle --dynamic --defined-only --extern-only /lib64/libc-2.32.so | grep stime
000000000012e490 T stime@GLIBC_2.2.5
为什么libc 2.32与现有的FTDI驱动程序不兼容?既然符号似乎存在,那么即使是2.32版本,它们也应该可以一起使用,对吗?