• 3
  • 11月

最近使用GCC时,老是提示一个错误:
/cygdrive/xx/..\xxx/xxxx.c:118: multiple definition of `xxxx'<br />
xxx/xxxx.o:/cygdrive/xx/..\xxx/xxxx.c:118: first defined here


大概意思就是,有一个函数重定义了!
可是在整个程序中,我并没有去重定义这个函数啊!

最后,经过Hanny的一番查找,原来是斜杆和反斜杆惹的祸!

我们知道,Windows是比较喜欢用反斜杆的,而Linux却钟情于斜杆。

由于在GCC的Makefile中使用了反斜杆的路径,而在linker文件中却使用了斜杆路径,这样,链接器就认为是两个不同路径了。同一个文件也就链接了两次,造成了重定义的发生。

解决方法就是,统一使用斜杆或反斜杆就行了。而Hanny比较推荐斜杆。