【问题标题】:Is it possible to export a sub set of symbols using gcc?是否可以使用 gcc 导出一组符号?
【发布时间】:2018-09-26 02:30:27
【问题描述】:

我现在有一个可执行文件。我想从其他进程调用这个可执行文件中的一些函数,所以我尝试使用“-fPIC -pie -rdynamic”编译可执行文件,并使用 dlopen() dlsym() 来调用这些函数。它按预期工作。但是“-rdynamic”会导出许多不需要的符号。我只想导出其中的一个子集。怎么做?

【问题讨论】:

  • 您的共享对象是使用Visibility 的包装共享对象吗?如果没有,请开始使用符号可见性。如果是这样,请使用-Wl,--exclude-libs,ALL 构建它。它会阻止您的共享对象重新导出其他库符号。
  • 你可以使用 libtool,它有一个选项 -export-symbols,它接受一个包含符号名称列表的文件。
  • 我找到了解决方案。使用 -Wl,--dynamic-list,symbol.list

标签: linux gcc compilation


【解决方案1】:

我找到了解决办法。使用 -Wl,--dynamic-list,symbol.list symbol.list 是当前路径下的一个文件,内容如下:

{foo;goo;};

这意味着我导出符号 foo 和 goo

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 2012-03-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2018-03-09
    • 2020-10-25
    相关资源
    最近更新 更多