• 如果一个symbol没有被定义,在编译过程中就会报找不到定义的错误
    • 如果是头文件找不到,也会直接报出头文件不存在的错误
    • 有些时候编译出来的lib被移走了,运行的时候会直接报lib不存在的错误,或者编译的时候报找不到lib
    • 如果链接中出现undefined reference to,有两种可能:
      • 一个是忘记设置某个symbol的lib
        • 自己编译的lib多是因为这个问题,只设置了头文件,没有设置lib(静态和动态lib都一样)
      • 设置了lib,lib也找到,但是版本不对,被找到的版本中正好缺少需要的那个symbol
        • 经常和写的东西完全无关的lib报这个错误。多是因为环境变量发生变化后。比如新装了某个以前已经有的库。然后就链接到新这个库上了,但是新的库和之前比,缺少某些symbol。这个时候一定要把缺少symbol的库找出来,然后把系统中存在的所有这个库都找出来,然后想办法让程序找到正确的那个库。