如果链接器错误“undefined reference”,如何find符号的调用例程?

我有一个问题链接一个embedded式目标的应用程序。 我正在使用Min-GW在windows下运行一个在Linux下运行的ARM9目标。
其实我从静态链接切换到dynamic链接.so库以节省内存空间。
我收到错误消息

 libT3Printer.so:对`__ASSERT'的未定义引用

我检查了lib的所有来源,我不知道这个函数可以调用的地方。 有没有可能找出谁(哪个源文件或函数)可能是缺less函数的调用者?

这个参考可能被一个宏隐藏了。 如果使用-E选项运行编译器以生成前驱输出,则可能有更好的机会追踪它。

尝试添加定义NDEBUG

在C中,用NDEBUG编译定义:

gcc -DNDEBUG foo.c

禁用所有对assert()的调用,并且这种行为在C ++中是相同的:

g++ -DNDEBUG foo.cpp