#include using namespace std; int main() { cout << "Hello World!" << endl; return 0; }
5
1
私はc ++で単純なhello world関数をコンパイルしようとしています。 コンパイルした後、実行して「セグメンテーションフォールト」を取得します。 誰かがこれに光を当てることはできますか?
次のコマンドを使用して、Linuxコマンドラインからこれをコンパイルしています。
_ g hello.cpp _
#include using namespace std; int main() { cout << "Hello World!" << endl; return 0; }
4 Answer
6
プログラム自体はOKです。 コンパイル環境にセグメンテーション違反を引き起こしている奇妙なことがあると思います。
最善の策は、これをデバッガー(gdb)で実行することです。これにより、どこでクラッシュしているのかがわかり、問題の原因を突き止めることができます。
これを行うには、次のようにコンパイルします。
g++ -g -o hello hello.cpp
次に、gdbを実行します。
gdb hello
そして、gdbプロンプトでタイプ
run
プログラムを実行します。 クラッシュしたら、次を入力します
bt
スタックトレースが得られ、何が起こっているのかを把握するのに役立ちます。
1
そのコードには何の問題もないので、まずコンパイラーを、次にハードウェアを調査する必要があります。
1
このようにコンパイルします
g ++ -Bstatic -static hello.cpp
そして、。/ a.outを実行します
これがセグフォールトでない場合、LD_LIBRARY_PATHが原因です。
0
これはロングショットかもしれませんが、 `int main()`を `int main(int argc、char * argv [])`に変更してみてください