2016-01-26 49 views
0

我正在用Googletest编写一个测试工具,并且需要控制符号表以避免冲突(代码库主要是C和Linux上的一些C++)。导出地图可以只选择要链接的功能吗?

我正在寻找一种方法来链接我只需要在文件中的功能,也能够创建自定义功能的链接反对每个测试。

这有点宽泛我知道,但任何建议或想法将是最受欢迎的!

回答

1

您可以使用您的链接器的版本脚本来定义符号表中应该导出哪些符号。

这样的版本脚本可以是这样的:

{ 
    global: 
    symb1; 
    symb2; 
    symb3; 
    local: *; 
}; 

这个例子将只导出符号symb1-3,所有其他符号如从符号表中略去。

现在指定该脚本版本脚本为连接器,一个例子共享库:

cc -shared obj1.o obj2.o obj3.o -o library.so -Wl,--version-script=<scriptname> 

甚至更​​多的控制可以通过符号版本来获得,更多的细节可以在LD-文档中找到: http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_25.html

相关问题