linux - 共享库怎么可能定义一个函数但不能链接到它?

标签 linux gcc shared-libraries

这怎么可能:

>nm --defined-only foobar.so | grep foobar
000000000003c7c0 t foobar
>gcc foobar.c foobar.so
foobar.c:(.text+0x19): undefined reference to `foobar'
collect2: ld returned 1 exit status

最佳答案

你不能链接到“foobar”,因为foobar.so将“foobar”定义为“文本”区域中的局部符号,并且只导出全局符号

nm 输出的第二列给出了符号类型。小写表示本地,大写表示全局。仅导出全局符号。参见 man nm(1)

关于linux - 共享库怎么可能定义一个函数但不能链接到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36166877/

相关文章:

c++ - C++ 的手册页在哪里?

linux - 适用于 gnome 桌面版的 Wiki 编辑器

c++ - Boost.Exception 符号出现在 'nm' 输出中是什么意思?它们会导致 ODR 违规吗?

c - 避免过于具体的依赖关系

c++ - 仅当 CMake 中的 header 更改时才重新链接共享库

python - 如何将 eps 文件转换为 png 文件并保持名称?

linux - 确定进程花费时间等待的系统调用或子系统

c++ - 无法链接到 SQLite3 静态库

c++ - 编译要在 C++ 版本中链接的 C 库...是否需要指定 C++ 标准?

linux - 是否可以强制使用一系列虚拟地址?