【发布时间】: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