设置 Google Test 时找不到 -lgtest

问题描述 投票:0回答:3

我正在使用 Google Test 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 也很陌生,所以我真的迷失了。

c++ googletest
3个回答
13
投票

我在 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
的解决方案,但从好的方面来说,它可以按原样工作。


0
投票

截至目前,Google 测试框架尚未附带预构建的二进制文件;你需要自己构建它们。请参阅 README 中有关如何执行此操作的完整详细信息(对于 Debian,路径为 /usr/src/googletest/googletest/README.md)。


0
投票

在 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
(和
cd /usr/src/googlemock
...)

© www.soinside.com 2019 - 2024. All rights reserved.