Mau*_*uro 5 c++ gcc visibility shared-libraries linker-flags
我有:
Bar带有方法的类int Bar::do(int d) constFoo带有方法的类int Foo::act(int a) const.代码Bar是这样的:
//Bar.h
class __attribute__ ((visibility ("default"))) Bar
{
private:
__attribute__ ((visibility ("hidden"))) int privateMethod(int x) const;
public:
Bar() {}
int do(int d) const;
}
//Bar.cpp
#include "Bar.h"
#include "Foo.h"
int Bar::do(int d) const {
Foo foo;
int result = foo.act(d) + this->privateMethod(d);
return result;
}
Run Code Online (Sandbox Code Playgroud)
libShared.so使用flag -fvisibility = hidden编译.
问题如下:我执行Linux命令nm -g -D -C --defined-only libShared.so,结果是类Foo及其方法在libShared.so之外可见,尽管告诉了编译器隐藏除标记为"公共"之外的所有内容(事实上,它们被标记为"T"by nm).
我怎么能避免这个?我希望libShared.so不要公开来自其依赖项的符号.
谢谢
您还需要使用flag 编译libStatic.a-fvisibility=hidden.
| 归档时间: |
|
| 查看次数: |
2692 次 |
| 最近记录: |