【发布时间】:2016-09-28 15:33:42
【问题描述】:
我在用户空间熔断器库中添加了一个新函数(fuse_lowlevel_notify_inval_directory)。 libfuse.so 的编译和创建完成,没有错误。 但是当我的应用程序尝试使用这个新函数时,链接器会抛出错误:未定义的对 `fuse_lowlevel_notify_inval_directory' 的引用 collect2: ld 返回 1 个退出状态
当我用 nm 检查时
nm ../libfuse.so | grep inval
00000000000154ed T fuse_invalidate
**000000000001e142 t fuse_lowlevel_notify_inval_directory**
000000000001e26c T fuse_lowlevel_notify_inval_entry
000000000001e1cb T fuse_lowlevel_notify_inval_inode
T/t 表示符号出现在文本部分。如果是大写,则符号是全局的(外部的)。我怀疑这是问题所在。新添加的函数显示小写 t,而其他旧函数显示大写 T。知道我可能做错了什么吗?
【问题讨论】:
-
显然你没有给你的函数外部链接。至少需要代码更有帮助。
标签: gcc linker shared-libraries