このエラーメッセージには、同様の質問が多数あります。しかし、まだ解決策が見つかりません。
AWS Ubuntuサーバーで、C++ Hello、Worldプログラムを作成しました
#include <iostream>
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.
実行可能プログラムを作成するには、コマンドを再度実行しますwithout-c
フラグ:
g++ test.cc -o out
に続く
./out
(実行可能フラグはデフォルトで設定されます-明示的なchmod
は必要ありません)。