【发布时间】:2011-02-08 19:25:42
【问题描述】:
在 Solaris 10 下,我正在创建一个库 A.so,它调用在库 B.so 中定义的函数 f()。为了编译库 A.so,我在代码中将 f() 声明为 extern。
不幸的是,我“忘记”在 A 的 makefile 中声明它必须与 B 链接。 但是,“make A”不会导致任何警告、错误,并且会创建库 A.so。
当然,在执行A的代码时,f()的调用会因为未定义而崩溃。
有没有办法(链接器选项,代码技巧......)使库 A 的编译失败? 如何确定库 A 中引用的所有符号都是在编译时定义的?
感谢您的任何建议。
【问题讨论】: