使用' -u' gcc的旗帜

时间:2013-12-07 07:24:10

标签: c++ c gcc g++

我指的是this线程。我有同样的问题,包装在同一文件中定义的函数调用。 线程的起始答案说,似乎不可能这样做,但在最后一个人提到的,它可以通过使用-u标志来实现。 我花了很多时间来弄清楚如何做到这一点,但我无法实现包装同一文件的调用。 真的有可能吗?有人可以解释一下吗?

2 个答案:

答案 0 :(得分:1)

编辑:删除了关于(无关)-U(大写)切换的评论。

链接器仅负责不同翻译单元之间的符号解析。在同一个翻译单元中,编译器负责解析符号。

因此,当涉及同一翻译单元内的函数调用时,-u标志“太晚了”。

(请记住,在同一个翻译单元中,优化器可以自由内联函数,因此甚至可能没有函数调用来包装..)

尝试查看gcc的以下开关。它可以帮助你:

 -finstrument-functions

它允许您在功能开始/结束之前/之后自动调用功能。

答案 1 :(得分:0)

GNU gcc/ld - wrapping a call to symbol with caller and callee defined in the same object file

我添加了代码段,显示了如何拦截函数调用。