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/.lib(第二个隐藏目录)而不是 gtest1.7/lib 下。所以我做错了什么?

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.alibgmock.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 中,导航您的项目-> Properties -> C/C++ build -> Settings -> your compiler Linker -> Libraries并删除gmock.agtest.a

  • 立即在Libraries下找到Miscellaneous。在那里,在 Other objects中,添加:

    /full/path/to/libgtest.a

    /full/path/to/libgmock.a

所有这些建议都对我有用。

于 2014-01-18T23:44:28.317 回答