在调试 test4 时,void foo() 函数在 strongdef.c 中声明,weakdef.c 中定义,但 weakdef.c 对应的 relocTable 中找不到 foo 符号,因此 linker 返回“undefined reference for symbol foo”
请问这是正常的吗,我是否需要通过其它方法判断函数是否有定义,例如 symbolTable?
在调试 test4 时,void foo() 函数在 strongdef.c 中声明,weakdef.c 中定义,但 weakdef.c 对应的 relocTable 中找不到 foo 符号,因此 linker 返回“undefined reference for symbol foo”
定义是不会进入 relocTable 的,只有引用才会。
weakdef.c 没有引用 foo,所以自然不需要对 foo 符号进行重定向,relocTable 中也就没有 foo 符号。