GNU链接器:--version-script的替代方法,用于在命令行列出导出的符号?

Dav*_*eau 9 linux linker symbols

在使用GNU工具链的Linux上,我知道如何使用版本脚本(gcc -Wl, - version-script = symbols.map)控制共享库中的导出符号,但我想在命令行上列出导出的符号代替.IOW,我想要相当于

link /EXPORT:foo 
Run Code Online (Sandbox Code Playgroud)

来自MS工具链.可能吗 ?

编辑:

我的问题可能不是很清楚:如果我有一个库libfoo.so,并且我只想导出库foo1和foo2,我可以创建一个版本脚本foo.linux如下

libfoo.so
{
global:
    foo1;
    foo2;
local:
    *;
}
Run Code Online (Sandbox Code Playgroud)

并做

gcc -shared foo.c -Wl,--version-script=foo.linux -o libfoo.so -soname libfoo.so
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这样的事情:

gcc -shared foo.c -Wl,--export-symbol=foo1 -Wl,--export-symbol=foo2 -o libfoo.so -soname libfoo.so
Run Code Online (Sandbox Code Playgroud)

Unk*_*own 3

我不确定你是否可以按照你想要的方式做到这一点。一种方法是使用您提到的链接器版本脚本。另一种方法是添加__attribute__ ((visibility("default")))您想要导出的任何内容的源代码并使用以下命令编译所有内容-fvisibility=hidden