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)
我不确定你是否可以按照你想要的方式做到这一点。一种方法是使用您提到的链接器版本脚本。另一种方法是添加__attribute__ ((visibility("default")))您想要导出的任何内容的源代码并使用以下命令编译所有内容-fvisibility=hidden
| 归档时间: |
|
| 查看次数: |
5853 次 |
| 最近记录: |