问尽管我在链接时明确要求了正确的库,但我仍然收到因库函数未定义而产生的错误。
答许多链接器会对您指定的对象文件和库列表进行一次扫描,并且仅从库中提取那些满足迄今为止未定义引用的模块。因此,库相对于对象文件(以及它们彼此之间)的列出顺序非常重要;通常,您希望最后搜索库。
例如,在 Unix 下,命令行如下:
cc -lm myprog.c # WRONG通常不会奏效。相反,将任何-l选项放在命令行末尾
cc myprog.c -lm
如果您先列出一个库,链接器还不知道它需要该库中的任何内容,就会跳过它。另请参阅问题 13.28。