web-dev-qa-db-ja.com

eclipse-cdt静的ライブラリとリンクする方法

最初に、リンカー/ライブラリの下にライブラリを設定するか、「パスとシンボル」の下にライブラリを設定する必要があるのか​​混乱しています。それらは同じだと思います。私は正しいですか?

私の質問にはどうしても-静的ライブラリをリンクする必要があるので、いくつか試しました:

最初の試行リンクライブラリに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

この投稿 答えを出さず、静的と共有に対して異なるリンクを定義する方法を説明しません。

ありがとうございました

13

多くの研究の後、関連する答えはありません。それを見つけた!!!私はそれを Eclipse-cdtのこの便利なリンク で見つけました

どうやら、ライブラリはワークスペースに存在する必要があります。

17

ライブラリパス/ファイルを次の場所に追加します:プロパティ-C/C++ビルド-設定-GCCC++リンカー-その他-その他のオブジェクト

3
user1166007

ここには入りたくないという理由で、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を使用しています。

1
Raging Software