“多个定义”的报告不正确

时间:2011-08-28 14:50:46

标签: c++ linker g++ kubuntu

我一直在使用C ++开发跨平台库。我一直在Windows(MinGW / msys)和Ubuntu(g ++)中进行编译,它编译时没有任何错误。

我刚拿着Kubuntu的电脑。当我尝试编译它时,我得到一些错误,说我对一些变量有多个定义。这些变量在头文件中定义extern,并在一行中的一个cpp中定义。

./libAoTK.a(aotk_unix.o):/home/rickard/c++/AoTK/src/aotk_unix.cpp:16: multiple definition of `AoTK::disp'
./libAoTK.a(aotk_unix.o):/home/rickard/c++/AoTK/src/aotk_unix.cpp:12: first defined here

aotk_unix.cpp中的代码只有disp的一个定义,第12和第16行没有disp的引用。

我不明白为什么它无法链接,而完全相同的代码在另一台* nix机器上编译得很好。

1 个答案:

答案 0 :(得分:1)

我在bdonlans评论的帮助下想出来了。创建lib-archive时问题出现在我的makefile中。我用了命令

ar -cvq 

当更改为

时,它不会覆盖存档中的存在文件
ar -cr

它没有任何错误链接