c++ - 导出 map 可以只选择您要链接到的功能吗?

标签 c++ c linux makefile gnu

我正在用 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/

相关文章:

linux - 使用 sed 插入(或追加)以尾部反斜杠 (\) 结尾的行

c++ - 如何从 STL 修改 std::valarray 类?

c - 输入 "###"后退出C程序

C 字符串返回函数返回垃圾

c - Go 系统调用 vs. C 系统调用

c++ - ofstream-保存一个函数返回一个txt

c++ - 构造函数中变量初始化的正确顺序

c++ - 文件重定向到程序

c++ - 如何在 QComboBox 中显示短值并在其下拉列表中显示长值?

linux - Oracle Client for Console 屏幕