NotePublic/Software/Development/Standard/GCC/GCC_库导出符号控制.md

662 B
Raw Blame History

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) 会被隐藏。