gcc编译的Hello World c ++的exec格式错误

我知道这里有很多类似的问题。 但我还没有找到任何解决方案。

在AWS ubuntu服务器上,我编写了c ++ Hello,World程序

#include  using namespace std; int main(){ cout<<"Hello, World!"<<endl; return 0; } 

并编译:

 ubuntu@ip-xxxxx:~/dev/c++$ g++ -c ./test.cc -o out ubuntu@ip-xxxxx:~/dev/c++$ chmod a+x out ubuntu@ip-xxxxx:~/dev/c++$ ./out -bash: ./out: cannot execute binary file: Exec format error ubuntu@ip-xxxxx:~/dev/c++$ file ./out ./out: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped ubuntu@ip-xxxxx:~/dev/c++$ uname -a Linux ip-xxxxx 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux ubuntu@ip-xxxxx:~/dev/c++$ gcc --version gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4 

似乎架构x86-64彼此相同。 这里有什么问题? 我是否必须添加更多c ++标志?

-c标志告诉g++将源代码编译为目标代码,但不要将其与必要的库链接以创建独立的可执行二进制文件。 来自man gcc

  -c Compile or assemble the source files, but do not link. The linking stage simply is not done. The ultimate output is in the form of an object file for each source file. 

要创建可执行程序,只需在没有 -c标志的情况下再次运行命令:

 g++ test.cc -o out 

其次是

 ./out 

(可执行标志将默认设置 – 不需要显式chmod )。