0

我确定我做错了什么,但是...我在一台计算机上处​​理了一个 c++ 项目,安装了相同版本的 Ubuntu,相同版本的 g++,它在那里编译得很好。我将文件放入 DropBox 文件夹中,这样我就可以在家中处理它,这里有完全相同的文件,并且完全相同的 g++ 命令会导致错误。它给了我几个“' _ '的多重定义”错误。

有谁知道我在这里做错了什么?

示例错误:

g++ -o*.C *.cpp

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

3 回答 3

1

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

我通过从 DropBox 文件夹中删除文件并重新编译来解决我的问题,然后工作得很好。

于 2012-05-21T14:07:48.030 回答
0

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

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

我的猜测引擎没油了。除非您显示有关 DropBox 中的文件、声明和定义done等的一些代码和信息,否则无法给出更好的答案。

于 2012-05-02T01:32:55.447 回答
0

你在你的 shell 中输入这个:

g++ -o*.C *.cpp

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

您可以通过转到它工作的机器并输入以下命令来找到该命令:

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

这将向您显示 shell 为您生成的命令。如果您在另一台机器上尝试该命令,我敢打赌它会起作用。

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

于 2012-05-02T02:19:00.700 回答