我正在用 Googletest 编写测试工具,需要控制符号表以避免冲突(代码库主要是 C,在 Linux 上有一点 C++)。
我正在寻找一种方法来仅链接到文件中我想要的函数,并且还能够创建自定义函数集以针对每个测试进行链接。
我知道这有点宽泛,但欢迎任何建议或想法!
最佳答案
您可以使用链接器的版本脚本来定义应在符号表中导出哪些符号。
这样的版本脚本可以是这样的:
{
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
关于c++ - 导出 map 可以只选择您要链接到的功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35012549/