相关疑难解决方法(0)

共享so库中的nm符号输出t vs T.

我在用户空间保险丝库中添加了一个新功能(fuse_lowlevel_notify_inval_directory).libfuse.so的编译和创建完成没有错误.但是当我的应用程序尝试使用这个新函数时,链接器抛出错误:未定义引用`fuse_lowlevel_notify_inval_directory'colle2: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
Run Code Online (Sandbox Code Playgroud)

T/t表示符号出现在文本部分中.如果是大写,则符号为全局(外部).我怀疑这是问题所在.新添加的功能显示小写t,而其他旧功能有大写T.任何关于我可能做错的想法?

linker gcc shared-libraries

18
推荐指数
1
解决办法
8130
查看次数

在Linux或OSX中动态加载库?

我知道在Windows中你会做类似LoadLibrary的事情然后用GetProcAddress设置你的函数指针,

但是在Linux或OSX中会怎样做类似的事情呢?原因是我想为我的X平台应用程序开发一个插件系统.

谢谢

c++

16
推荐指数
3
解决办法
2万
查看次数

在gcc中链接到so库

我将首先说我是gcc和makefile的新手.我在桌面(〜/桌面)上有一个.so文件lib.so.我想将我的程序(称为myProgram)链接到它.我在makefile中写的是:

g++ myProgram.o -L ~/Desktop -l lib -o myProgram
Run Code Online (Sandbox Code Playgroud)

当我跑步时,make我得到一个错误:

/usr/bin/ld: cannot find -llib
Run Code Online (Sandbox Code Playgroud)

我也试过-l lib.so并得到了同样的错误.链接的正确方法是什么?

linker gcc shared-libraries

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

gcc ×2

linker ×2

shared-libraries ×2

c++ ×1