当前位置: 首页 > 面试题库 >

如何查看Linux共享库正在导出的功能列表?

闻人冷勋
2023-03-14
问题内容

我想查看Linux上共享库的导出功能。

什么命令允许我执行此操作?

(在Windows上,我使用的程序取决于)


问题答案:

您需要的是nm它的-D选择:

$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
         U atanf
         U calloc
.
.
.

导出的sumbol用表示T。必须从其他共享库加载的必需符号有一个U。请注意,符号表不仅包括函数,还包括导出的变量。

有关更多信息,请参见nm 手册页。



 类似资料:
  •       进入共享文件,即可查看【共享给我】和【我共享的】的文件。 1)共享给我: 他人文件的共享名单中有我或者通过链接或二维码共享给我的都会统一展示在共享给我列表,方便查看和查找。 2)我共享的: 统一展示由我共享出去的文件,共享文件信息一目了然,不用担心文档共享被遗忘导致的文档泄露风险。

  • 问题内容: 我使用Windows Host上的RVDS编译器使用目标代码文件(C源代码)创建了一个共享库()。 我将此共享库与一个应用程序链接(用于Linux主机上的ARM目标)并获得一个可执行文件,该可执行文件在运行时会产生分段错误。(我知道我必须调试它!) 如果不创建共享库,而是创建具有相同源文件的静态库,然后与该应用程序链接,然后执行该应用程序,则可以正常运行。 所以我的问题是: 我是否需要

  • 问题内容: 有什么方法可以从Java代码中调用库中的函数吗?通常,可以在Java程序中使用Linux 库吗? 问题答案: 答案是“ JNI” :) 这里有几个链接: 如何在Linux上为JNI应用程序编译动态库? http://learn-from-the-guru.blogspot.com/2007/12/java-native-interface-jni-tutorial-hell.html

  • 问题内容: 我正在Linux下使用C ++开发共享库,并且我希望该库使用log4cxx进行日志记录。但是,我不确定该如何设置。为了使log4cxx正常工作,我需要创建一个记录器对象。我如何确保在加载库时创建了该对象? 我怀疑将记录器对象创建为全局变量,然后从我的库的任何源文件中使用它,在标头中将其声明为extern,将是最容易的。但是,一旦应用程序连接到库,如何自动创建记录器? 我知道在Windo

  • 问题内容: 注意到,创建一个可执行文件,我刚刚得到了奇怪的想法来检查时,我尝试运行它......好结果是发生了什么 段错误 我自己的库。因此,对此感到好奇,我试图“运行” glibc(在我的系统上)。果然,它没有崩溃,但是提供了一些输出: 所以我的问题是:这背后的魔力是什么?我不能只在库中定义符号-可以吗? 问题答案: 我写 了一篇 有关该主题的博客文章,在此我进行了更深入的介绍,因为我发现它很有

  • 问题内容: 最近,我们被要求提供其中一个库的Linux版本,之前我们是在Linux下开发的,并已针对Windows发行,而在Windows上部署库通常要容易得多。我们遇到的问题是将导出的符号剥离为仅暴露界面中的符号。想要这样做的三个很好的理由 为了保护我们技术的专有方面,以免通过导出的符号被暴露。 防止用户遇到符号名称冲突的问题。 为了加快库的加载速度(至少有人告诉我)。 然后举一个简单的例子: