【问题标题】:Eclpse CDT gtest setup error:cannot find -lgtestEclipse CDT gtest 设置错误:找不到 -lgtest
【发布时间】:2014-01-19 17:29:00
【问题描述】:

我关注这个post

在 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 下。 那我做错了什么?

【问题讨论】:

    标签: eclipse eclipse-cdt googletest gmock


    【解决方案1】:

    您似乎试图建立指向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 中,导航您的项目 -> 属性 -> C/C++ 构建 -> 设置 -> 你的编译器链接器 -> 并删除gmock.a, gtest.a p>

    • Libraries 下会立即找到 Miscellaneous。那里,在 其他对象,添加:

      /full/path/to/libgtest.a

      /full/path/to/libgmock.a

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-10
      • 2019-05-28
      • 2011-02-18
      • 1970-01-01
      • 2015-06-15
      • 2020-11-10
      • 2018-03-23
      • 2011-12-22
      相关资源
      最近更新 更多