当我尝试使用ONE LINE编译程序时,g ++崩溃了

时间:2017-03-31 05:00:14

标签: c++ compiler-errors g++

我的节目是这样的:

#include <iostream>

就是这样。这是整个计划,只有一行。

我试着用它编译它:

g++ CVB--OpenPic--00.cpp -o cv

我得到了这个:

/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

我在过去几周内编辑了许多其他.cpp文件,以及许多其他程序。究竟发生了什么这里

2 个答案:

答案 0 :(得分:3)

您尚未在程序中定义main()功能。

如错误地说:

(.text+0x20): undefined reference to `main'

PS:

这不是g++的崩溃,只是在无法找到main()的定义时显示错误消息。

答案 1 :(得分:3)

您的g++没有崩溃。它刚刚正确地发出了一些错误消息,然后它成功完成(失败退出代码)。实际上,错误消息是由链接器ld(在运行g++编译器后cc1plus已运行)提供的。

您的代码没有任何main函数(在C ++中构造静态变量后开始执行的函数),因此您无法将其编译为可执行文件。

顺便说一句,你应该始终编译你的代码并提供所有警告&amp;调试信息,所以使用

g++ -Wall -g CVB--OpenPic--00.cpp -o cv

调试程序后(使用gdb调试程序),您可能希望对其进行基准测试。然后要求编译器进行优化(例如,通过向-O2添加g++选项)。

请注意,g++的参数顺序非常重要。

一旦你的程序变得更大并由几个 translation units组成(例如几个.cpp文件,可能所有#include - 你的头文件[s]) ,您需要使用build automation工具(例如make)。还要学习使用像git这样的版本控制系统和像valgrind这样的内存泄漏检测器。