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

我如何找出从共享库导出的所有符号是什么?

邢昂然
2023-03-14
问题内容

我有一个共享的对象(dll)。我如何找出所有从中导出的符号?


问题答案:

您是否有“共享库”(通常是AIX上的共享库),UNIX共享库或Windows DLL?这些都是不同的东西,您的问题将它们全部融合在一起:-(

  • 对于AIX共享对象,请使用dump -Tv /path/to/foo.o
  • 对于ELF共享库,请使用readelf -Ws /path/to/libfoo.so或(如果您有GNU nm)nm -D /path/to/libfoo.so
  • 对于非ELF UNIX共享库,请说明您对 哪个 UNIX感兴趣。
  • 对于Windows DLL,请使用dumpbin /EXPORTS foo.dll


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

  • 问题内容: 使用GCC,如何在创建共享库后从共享库中删除符号?如果我在C中使用三个文件来处理符号,例如: 和 和 然后我像这样编译并运行: 我怎样才能让这个不再具有象征我已经创建后?我希望使用中定义而不是 从中 删除符号。之后从删除,再运行应该产生的打印输出: 在这个玩具示例中,我知道用and 编译时可以简单地对库名称进行重新排序,但是实际上如何从中删除符号呢?我想象在从中删除后,nm输出的这个g

  • 问题内容: 我的Jenkins主管没有执行者 ,而且由于我们公司中Jenkins的设计而没有 执行者 。我们有2个工作节点。当我添加Pipeline共享库时,默认情况下,Jenkins尝试在master中检出并由于明显原因而失败,因为它找不到,因为在Jenkins master中不可用。 我不明白为什么Jenkins甚至可以尝试检出master中的共享库,因为master甚至没有执行者。 我查看了

  • 问题内容: 两个共享库liba.so和libb.so。liba.so使用libb.so。所有c文件都使用-fPIC编译。链接使用- shared。当我们在liba.so上调用dlopen时,它无法在libb.so中找到符号…我们得到“未定义符号”错误。我们可以dlopen libb.so没有错误。我们知道liba正在找到libb,因为我们没有得到文件未找到错误。删除libb.so时,出现文件未找到

  • 我有一个CMACE项目,它的下一个结构是: 输出树为: 如果我在linux下编译程序,所有的工作都很完美,但是当我在Windows下做的时候,编译很好,但是app.exe不执行;我得到下一个错误: 我怀疑不要链接internal.cpp,因为当我将它的过程移到internal.h中时,就可以很好地工作。 有什么需要帮忙的吗? 以下是文件:root::cmakelists.txt app::cmak

  • 问题内容: 我想查看Linux上共享库的导出功能。 什么命令允许我执行此操作? (在Windows上,我使用的程序取决于) 问题答案: 您需要的是它的选择: 导出的sumbol用表示。必须从其他共享库加载的必需符号有一个。请注意,符号表不仅包括函数,还包括导出的变量。 有关更多信息,请参见 手册页。