设置Google测试时找不到-lgtest
cannot find -lgtest when setting up Google Test
我正在使用GoogleTest for C++,并试图在我的linux机器上进行设置。我的make文件有以下代码:
CC=g++
CFLAGS=-I $(GOOGLETESTDIR)/include -L $(GOOGLETESTDIR)/lib -lgtest -lpthread -Wall
DEPS=fib.h
OBJS=fib.o main.o
all: | r6
clean:
-rm -f r6 $(OBJS)
%.o: %.cpp $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
r6: $(OBJS)
$(CC) -o $@ $^ $(CFLAGS)
.PHONY: all clean
我在运行make:时出错
/usr/bin/ld: cannot find -lgtest
我该如何解决这个问题?我对这种测试很陌生,对linux也很陌生,所以我真的很失落。
我在Ubuntu 17.10上遇到了这个问题,基本上Alexander说的是真的。
有人写了一个很好的教程,里面有明确的命令,可以在https://www.eriksmistad.no/getting-started-with-google-test-on-ubuntu/
它可以归结为:
sudo apt install libgtest-dev cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp *.a /usr/lib
就我个人而言,我很感激一个不手动将文件移动到/usr/lib
中的解决方案,但从好的方面来说,它可以正常工作。
到目前为止,Google测试框架还没有预装二进制文件;你需要自己建造它们。请参阅README中关于如何做到这一点的完整详细信息(对于Debian,路径为/usr/src/googletest/googletest/README.md)。
在Ubuntu 22.04中,您可以执行以下操作来链接gtest和gtest_main库:
apt install googletest
cd /usr/src/googletest
mkdir build
cd build
cmake ..
make
cmake --install .
此脚本将编译静态库libgmock.a libgmock_main.a libgtest.a libgtest_main.a
。然后使用cmake-install来避免手动将某些内容复制到/usr/local/lib
那么Makefile中的CFFLAGS
应该看起来像:
CFLAGS= -lgtest -lgtest_main -lpthread -Wall
如果使用gmock
,也可以添加-lgmock -lgmock_main
。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 设置Google测试时找不到-lgtest