我一直在使用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机器上编译得很好。
答案 0 :(得分:1)
我在bdonlans评论的帮助下想出来了。创建lib-archive时问题出现在我的makefile中。我用了命令
ar -cvq
当更改为
时,它不会覆盖存档中的存在文件ar -cr
它没有任何错误链接