2012-05-02 25 views
0

我确定我做错了什么,但是......我在一台计算机上工作了一个C++项目,安装了相同版本的Ubuntu, g ++,它在那里编译得很好。我把这些文件放到一个DropBox文件夹中,这样我就可以在家里处理它,同样的确切文件在这里,同样确切的g ++命令会导致错误。它给了我几个“多重定义”的错误。为什么g ++在完全相同的文件上失败,但在不同的计算机上

有没有人知道我在做什么错在这里?

实例错误:

g++ -o*.C *.cpp 

/tmp/ccdFZtkq.o:(.bss+0x718): multiple definition of `done' 
+1

这里有太多'same' :)你能发布错误和相关代码吗? –

+1

随机刺:可能与不同的行尾有关(CR/CRLF/LF) –

+0

@KingsIndian该代码不应该是相关的...因为完全相同的代码,完全相同的文件,编译好..我是假设问题与DropBox有关,可能会增加某种版本控制?也许在文件上... – NominSim

回答

1

的问题是,DropBox的是附加的后缀,我最能形容为是文件“中间“状态。 DropBox也创建了没有处于中间状态的后缀的文件。我仍然不确定发生了什么,但有时在g ++运行时,它使用中间文件和非中间文件,因此遇到基本上被加载多次的相同文件的问题。

我解决了我的问题,通过从DropBox文件夹中删除文件并重新编译,然后完美地工作。

0

做一个干净的构建。删除所有旧的目标文件并重新编译。

rm -rf *.o 
g++ -o *.C *.cpp 

猜测引擎燃油耗尽。不能给出更好的答案,除非你展示什么是文件存在于你的Dropbox,声明done

0

您类型的&定义一些代码,这个信息将你的shell:

g++ -o*.C *.cpp 

但这会导致您的shell生成该命令。最有可能的是,在这两个实例中生成了不同的命令。如果你拿出在工作情况下发出的实际命令,并在没有工作的情况下重复命令,我敢打赌它会起作用。

您可以去那里工作的机器并输入该find命令:

echo g++ -o*.C *.cpp 

会告诉你该命令为您生成的壳。如果你在另一台机器上试用这个命令,我敢打赌它会起作用。

(另外,你的命令是没有意义的。什么应该是-o*.C?您是不是要找-o something *.C?)

相关问题