2015-06-30 72 views

回答

1

尽管符号可见性可能有效,但它并不完全是所问问题的答案。它不是链接器选项,需要修改源文件,这可能是不可取的。或多或少相当于导出地图,但它仅适用于具有GNU链接器的GCC。 GCC命令行选项将

-Wl,--version-script=a.map 

与a.map看起来像

{ 
    global: a; 
    local: *; 
} 

更多信息以http://www.akkadia.org/drepper/dsohowto.pdf

1

一种方式做到这一点是使用__attribute__

void foo() __attribute__((visibility("default"))); 

void foo() { 
    /* Implementation */ 
} 

这应该重写你的-fvisibility=hidden参数仅此功能。您也可以这样做:

class __attribute__((visibility("default"))) my_class { 
    public: 
    myClass(); 
    ~myClass(); 

    // Other declarations... 
}; 

这会导出整个类和其中包含的所有声明。

相关问题