検索

ホームページ  >  に質問  >  本文

C++ - main 関数が実行される前にセグメンテーション違反が発生し、gdb はデバッグできません。これはおそらく g++ のコンパイル パラメータに関連しています。

C++ を使用して openssl をパッケージ化してみます。最初に静的ライブラリ libtest.a を作成します。 -lssl -lcrytpo -lpthread に依存します。
ディレクトリ構造:

2 つのテスト ファイルがあります: client.cpp、server.cpp
実行可能プログラムのコンパイルに使用されるコマンドは次のとおりです:
g++ -g -o2 -fpic client.cpp -I../include -L ../lib -ltest -shared -u -lssl -lcrypto -lpthread -o client
コンパイルは成功しました。
実行エラー。gdb デバッグにより、main 関数が開始される前にクラッシュしたことがわかりました。
補足: 主要な関数コードをすべてコメント化すると、上記のコンパイルは機能しません。コンパイル時に -shared パラメータを削除すると、プログラムは正常に終了します。

仅有的幸福仅有的幸福2738日前604

全員に返信(1)返信します

  • 天蓬老师

    天蓬老师2017-05-16 13:25:33

    静的ライブラリをコンパイルするために書いたコードに問題があります。

    返事
    0
  • キャンセル返事