最初に、リンカー/ライブラリの下にライブラリを設定するか、「パスとシンボル」の下にライブラリを設定する必要があるのか混乱しています。それらは同じだと思います。私は正しいですか?
私の質問にはどうしても-静的ライブラリをリンクする必要があるので、いくつか試しました:
最初の試行リンクライブラリにgtest(これはライブラリです)とgtestパスを追加しようとします。このようにして、コンパイルおよびリンクは正しく行われましたが、実行時に失敗しました。共有ライブラリを読み込もうとしたときに(静的ライブラリが必要です!)エラーが発生するためです。
共有ライブラリのロード中にエラーが発生しました:libgtest.so.0
2回目の試行-パスで定義して、ライブラリに完全なパスをシンボルで追加しようとします '/root/workspace/gmock/gtest/lib/.lib /libgtest.a '。この場合、リンケージでエラーが発生しました:
g++ -L/root/workspace/gmock/lib/.libs -L/root/workspace/gmock/gtest/lib/.libs -o "playground" ./src/p.o ./src/playground.o -lpthread -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a -l/root/workspace/gmock/lib/.lib/libgmock.a
/usr/bin/ld: cannot find -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a
この投稿 答えを出さず、静的と共有に対して異なるリンクを定義する方法を説明しません。
ありがとうございました
多くの研究の後、関連する答えはありません。それを見つけた!!!私はそれを Eclipse-cdtのこの便利なリンク で見つけました
どうやら、ライブラリはワークスペースに存在する必要があります。
ライブラリパス/ファイルを次の場所に追加します:プロパティ-C/C++ビルド-設定-GCCC++リンカー-その他-その他のオブジェクト
ここには入りたくないという理由で、Botan暗号化ライブラリを静的ライブラリとして構築しました。インターウェブのすべての手順を実行したら、ライブラリパスを追加し、「lib」と「」を付けずにライブラリ名を指定します。 a "、私のプロジェクトは問題なくビルドされましたが、実行すると、「プログラムが予期せず終了しました」(または同様の)エラーが発生し続けました。最後に私はそれを修正する方法を見つけました。メニューバーで、[プロジェクト]> [プロパティ]> [C/C++ビルド]> [設定]> [G ++リンカーのクロス]に移動し、-static
と${COMMAND}
の間に${FLAGS}
を追加すると、行全体が次のようになります。
${COMMAND} -static ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
あなたのものは異なるかもしれません。私はEclipseLuna Service Release 2(4.4.2)を使用しており、Windows8.1ではmingw-w64mingw-buildsプロジェクトw/gcc4.9.2を使用しています。