3

尽管缺少共享库(以及相关的缺失符号),我如何强制 gcc/ld 继续并链接(部分)可用的可执行文件?

上下文:我有一个仅作为 32 位 ELF 二进制 blob (libEposCmd.so) 分发的硬件驱动程序。它取决于我从上下文中知道实际上并未使用的库(libftd2xx.so)(ftdi 的东西用于usb-serial 适配器,我没有使用)。

gcc main.o -o epos_server -m32 -L/usr/lib32 -L/usr/local/lib32 -lEposCmd
/usr/bin/ld: warning: libftd2xx.so.0, needed by /usr/local/lib32/libEposCmd.so, not found (try using -rp
ath or -rpath-link)
main.o: In function `main':
/usr/local/lib32/libEposCmd.so: undefined reference to `FT_Write'
/usr/local/lib32/libEposCmd.so: undefined reference to `FT_SetDataCharacteristics'
/usr/local/lib32/libEposCmd.so: undefined reference to `FT_GetDeviceInfoDetail'
/usr/local/lib32/libEposCmd.so: undefined reference to `FT_SetFlowControl'
...

我唯一未定义的引用是 FT_*,我相当肯定它们都属于 libftd2xx。

丑陋的黑客是可以接受的;这是研究代码,我们希望尽快用更好的 linux 支持替换这个硬件(maxon epos2 电机驱动器)。

更新: .so 没有被剥离,所以应该可以为缺失的函数提取原型......

4

1 回答 1

-1

最快的方法是创建一个带有缺失函数的虚拟库并与之链接。

于 2012-07-06T13:54:40.750 回答