添加符号 libgtest.so 错误:命令行中缺少 DSO

libgtest.so error adding symbols: DSO missing from command line

本文关键字:DSO 命令行 符号 libgtest so 错误 添加      更新时间:2023-10-16

我一直在使用gtests对个人项目进行单元测试。上周我升级到Linux Mint的LTS版本。不幸的是,在那次事件之后,由于gtests链接问题,我无法编译我的项目。

正在发出以下错误:

/usr/bin/x86_64-linux-gnu-ld: build/tests/policies/roundrobin_tests.o: undefined reference to symbol '_ZN7testing4TestC2Ev'
/home/myuser/Documents/googletest-release-1.8.0/googletest/libgtest.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

我已经通过 CMake 3.10.2 生成了libgtest.solibgtest_main.so。最糟糕的版本是 release-1.8.0,和我以前一样。

这些库位于/usr/lib 中,相应的包含文件夹也已复制到/usr/include 中。我确保这个位置在我的ld路径中,这不是问题所在。

我的编译器是 g++ v7.3.0,我用来编译测试的命令是:

g++ -std=c++14 -Wall -O3 -Iinclude build/tests/policies/roundrobin_tests.o -lgtest_main -pthread -o bin/policies/roundrobin_tests

我尝试更改命令中元素的顺序,明确添加 -L/usr/lib 和 -I/usr/include 没有运气。一个有趣的事实是,如果我取下 -pthread 标志,错误仍然是一样的。

之前使用相同的命令,唯一的区别是我现在使用的编译器版本,因为我之前使用 g++ 5.4.0。关于如何解决这个问题的任何见解?

编辑:刚刚用g ++ 5.4.0和CMake 3.5测试了相同的过程,并出现了同样的问题。

你缺少链接lib -lgtest