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

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

我一直在使用 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。 gtest版本是release-1.8.0,和我之前用的一样。

这些库位于 /usr/lib 中,相应的 include 文件夹也已复制到 /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 测试了相同的过程,并且出现了相同的问题。

c++ compiler-errors linker-errors googletest
1个回答
0
投票

您缺少链接 lib -lgtest

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