662 B
662 B
GCC 库导出符号控制
GCC 编译库的时候默认导出所有符号。可通过指定以下参数选择默认的导出方案:
-fvisibility=default|internal|hidden|protected
如果设置成了 hidden,那么,可在函数前增加
__attribute__ ((visibility("default")))
属性使其外部可见,或指定其属性。如:
/**
* @file example.c
*/
void func0(void)
{
...
}
__attribute__ ((visibility("default")))
void func1(void)
{
...
}
然后:
gcc -shared -o libexample.so -fvisibility=hidden example.c
则 void func1(void) 将被导出,而 void func0(void) 会被隐藏。