这个连接问题是由于将两个使用不同编译器编译出的目标文件连接到一起而导致的,原因经常是因为没有在所有的Makefile中统一使用$(CC)代表编译器。
/* 是否相等 */
ifeq ( $ ( PLATFORM) , 目标硬件平台)
export CROSS_COMPILE : = 编译器前缀
endif
export CC: = $( CROSS_COMPILE) gcc /* 编译器 */
export AR: = $( CROSS_COMPILE) ar /* 生成.a文件 */
export AS: = $( CROSS_COMPILE) as /* 汇编器 */
export LD: = $( CROSS_COMPILE) ld /* 连接器 */
export NM: = $( CROSS_COMPILE) nm /* */
export RANLIB: = $( CROSS_COMPILE) ranlib /* */
export STRIP: = $( CROSS_COMPILE) strip /* 优化目标文件大小 */
export SIZE: = $( CROSS_COMPILE) size /* */
也有可能是*.o 文件太旧了,而C文件又没有更新过,解决办法是将所有的*.o文件删除。