0

この投稿をフォローします

Eclipse cdt 8.2.1 で gtest 1.7 をセットアップするには、次のエラーが発生しました。

....test/AllTests.bc src/Test.bc -lgmock -lgtest -lpthread -lstdc++ 
/usr/bin/ld: cannot find -lgmock
/usr/bin/ld: cannot find -lgtest
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Info: Parallel threads used: 3

ところで、gtest 1.5 から 1.7 へのいくつかの変更があります。実際に次のようなリンクを作成します。

   sudo ln -s lib/.libs/libgtest.a /usr/lib/libgtest.a

ご覧のとおり、libgtest は gtest1.7/lib ではなく、gtest1.7/lib/.lib (2 番目の隠しディレクトリ) の下にあります。それで、私は何を間違えましたか?

4

1 に答える 1

2

次のコマンドを使用して、へのシンボリック リンクを作成しようとしlibgtest.a たようです。libgmock.a

sudo ln -s lib/.libs/libgtest.a /usr/lib/libgtest.a
sudo ln -s lib/.libs/libgmock.a /usr/lib/libgmock.a

と のコンソールから/your/path/to/gtest-1.7.0それぞれ/your/path/to/gmock-1.7.0

/usr/libファイルマネージャーで開いてリンクlibgtest.a を見つけ、libgmock.aそれらのプロパティを調べると、これらのリンクが壊れていることがわかると思います。そのため、リンカーはプロジェクトでリンクを見つけることができません。コマンドlnはターゲットへの相対パスを提供しますが、絶対パスが必要です。

その場合は、壊れたリンクを削除し、次のコマンドで再作成します。

sudo ln -s /full/path/to/gtest-1.7.0/lib/.libs/libgtest.a /usr/lib/libgtest.a
sudo ln -s /full/path/to/mock-1.7.0/lib/.libs/libgmock.a /usr/lib/libgmock.a

たとえば、私のシステムでは/full/path/to/=/home/imk/develop/

その後、ビルドが機能すると思います。

ただし、これらのシンボリック リンクを で作成すると/usr/lib、システムのインストールがわずかに損なわれます。で作成したほうがよいでしょう/usr/local/lib。または、さらに簡単に、これらの静的ライブラリをプロジェクト リンケージのオブジェクト ファイルに追加することもできます。

  • Eclipse で、プロジェクト->プロパティ-> C/C++ ビルド ->設定->コンパイラリンカー->ライブラリに移動し、削除gmock.aします。gtest.a

  • Librariesのすぐ下にMiscellaneousがあります。そこに、 その他のオブジェクトに、次を追加します。

    /full/path/to/libgtest.a

    /full/path/to/libgmock.a

これらの提案はすべてうまくいきました。

于 2014-01-18T23:44:28.317 に答える