记录一次ubuntu20.04 解决gmock not found问题的过程

在电脑上源码编译moveit,系统是ubuntu20.04,有三个电脑,分别叫做A,B,C好了,A和C都可以很顺畅地走流程编译通过,但是B遇到了gmock not found的问题,一开始没当回事,感觉重装下库,或者手动装一下就能解决,但是解决的过程还是走了一些弯路的,在这里记录一下。问题应该是由于之前手动安装的google-test可能没有开启gmock部分的编译安装?最后也不确定,先说一下最终的解决办法吧。

1. 使用到gmock报错的代码

在这里插入图片描述
这里会先使用add_rostest_gmock来生成一个测试的东西,然后把一些其他的库链到这个东西上面,但是会报错说找不到链接的目标,其实也就是生成的这个测试的文件

2. 最终办法

2.1 使用fdfind看一下电脑A和电脑B中和gmock有关的文件

这里需要进入到系统的根目录下,使用fdfind来看下系统中有哪些和gmock有关的文件,因为anaconda3其实也会有很多gmock等等的测试相关的库,但是我的这个编译和conda环境无关,所以需要使用grep管道来筛选掉一些我不需要看到的包含gmock关键字的文件,最终的命令和命令输出的结果如下所示,下面首先是电脑A(可以正常编译)的电脑的输出结果

fd gmock | grep -vE 'media|anaconda3|Downloads|Documents'
usr/src/gmock
usr/src/googletest/googlemock/src/gmock-spec-builders.cc
usr/src/googletest/googlemock/cmake/gmock_main.pc.in
usr/src/googletest/googlemock/src/gmock-matchers.cc
usr/src/googletest/googlemock/src/gmock-cardinalities.cc
usr/src/googletest/googlemock/src/gmock-all.cc
usr/src/googletest/googlemock/src/gmock-internal-utils.cc
usr/src/googletest/googlemock/src/gmock_main.cc
usr/src/googletest/googlemock/docs/gmock_faq.md
usr/src/googletest/googlemock/src/gmock.cc
usr/src/googletest/googlemock/cmake/gmock.pc.in
usr/src/googletest/googlemock/scripts/gmock-config.in
usr/src/googletest/googlemock/scripts/upload_gmock.py
usr/src/googletest/googlemock/scripts/fuse_gmock_files.py
usr/src/googletest/googlemock/scripts/gmock_doctor.py
usr/src/googletest/googlemock/test/gmock-pp-string_test.cc
usr/src/googletest/googlemock/test/gmock-nice-strict_test.cc
usr/src/googletest/googlemock/test/gmock-cardinalities_test.cc
usr/src/googletest/googlemock/test/gmock-generated-function-mockers_test.cc
usr/src/googletest/googlemock/test/gmock-spec-builders_test.cc
usr/src/googletest/googlemock/test/gmock_leak_test.py
usr/src/googletest/googlemock/test/gmock-function-mocker_nc_test.py
usr/src/googletest/googlemock/test/gmock-generated-matchers_test.cc
usr/src/googletest/googlemock/test/gmock_output_test.py
usr/src/googletest/googlemock/test/gmock-function-mocker_test.cc
usr/src/googletest/googlemock/test/gmock-actions_test.cc
usr/src/googletest/googlemock/test/gmock_test.cc
usr/src/googletest/googlemock/test/gmock_output_test_.cc
usr/src/googletest/googlemock/test/gmock-pp_test.cc
usr/src/googletest/googlemock/test/gmock_link_test.cc
usr/src/googletest/googlemock/test/gmock_leak_test_.cc
usr/src/googletest/googlemock/include/gmock
usr/src/googletest/googlemock/test/gmock_output_test_golden.txt
usr/src/googletest/googlemock/test/gmock_link2_test.cc
usr/src/googletest/googlemock/test/gmock-more-actions_test.cc
usr/src/googletest/googlemock/test/gmock_ex_test.cc
usr/src/googletest/googlemock/test/gmock-function-mocker_nc.cc
usr/src/googletest/googlemock/test/gmock-internal-utils_test.cc
usr/src/googletest/googlemock/test/gmock-generated-actions_test.cc
usr/src/googletest/googlemock/test/gmock-matchers_test.cc
usr/src/googletest/googlemock/test/gmock_stress_test.cc
usr/src/googletest/googlemock/test/gmock_test_utils.py
usr/src/googletest/googlemock/test/gmock_link_test.h
usr/src/googletest/googlemock/test/gmock-port_test.cc
usr/src/googletest/googlemock/test/gmock_all_test.cc
usr/src/googletest/googlemock/scripts/generator/gmock_gen.py
usr/src/googletest/googlemock/scripts/generator/gmock_gen
usr/src/googletest/googlemock/include/gmock/gmock-function-mocker.h
usr/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h
usr/src/googletest/googlemock/include/gmock/gmock-generated-actions.h
usr/src/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump
usr/src/googletest/googlemock/include/gmock/gmock-generated-actions.h.pump
usr/src/googletest/googlemock/include/gmock/gmock-generated-matchers.h
usr/src/googletest/googlemock/include/gmock/gmock-actions.h
usr/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump
usr/src/googletest/googlemock/include/gmock/gmock-cardinalities.h
usr/src/googletest/googlemock/include/gmock/gmock-matchers.h
usr/src/googletest/googlemock/include/gmock/gmock-nice-strict.h
usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h
usr/src/googletest/googlemock/include/gmock/gmock-more-matchers.h
usr/src/googletest/googlemock/include/gmock/gmock-more-actions.h
usr/src/googletest/googlemock/include/gmock/gmock.h
usr/share/cmake-3.16/Help/release/dev/FindGTest-target-for-gmock.rst
usr/src/googletest/googlemock/scripts/generator/cpp/gmock_class.py
usr/src/googletest/googlemock/scripts/generator/cpp/gmock_class_test.py
usr/src/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h
usr/src/googletest/googlemock/include/gmock/internal/gmock-pp.h
usr/src/googletest/googlemock/include/gmock/internal/gmock-port.h
usr/src/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h
usr/src/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump
usr/src/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h
usr/src/googletest/googlemock/include/gmock/internal/custom/gmock-port.h

这里面其实可以看到,和gmock有关的文件基本上都是在usr/src目录下的,那其实已经基本能够断定这个电脑的gmock并非是手动安装的,而是使用apt在安装某些库的时候为我们安装到/usr/src目录下的,因为我们手动安装的文件其实往往在/usr/local目录下,为了更进一步地进行确认,我们使用下面的命令:

dpkg -S /usr/src/googletest/googlemock

输出结果

> dpkg -S /usr/src/googletest/googlemock
googletest: /usr/src/googletest/googlemock

所以其实是apt安装的googletest这个库在包含了gmock

然后就是看一下电脑A现在已经安装的google或者是gmock的库有哪些

> sudo apt list --installed| grep -E "google"WARNING: apt does not have a stable CLI interface. Use with caution in scripts.google-chrome-stable/now 138.0.7204.100-1 amd64 [installed,upgradable to: 139.0.7258.66-1]
google-mock/focal,now 1.10.0-2 amd64 [installed,automatic]
googletest/focal,focal,now 1.10.0-2 all [installed,automatic]
> sudo apt list --installed| grep -E "mock"WARNING: apt does not have a stable CLI interface. Use with caution in scripts.google-mock/focal,now 1.10.0-2 amd64 [installed,automatic]

发现其实没有一些乱起八糟的lib dev库啥的,就是这几个库,然后就是在电脑B上面同样的走一遍,看一下每一个环节不一致的地方,把没有用到的库删了,把用到了但是安装路径不一致的库删了,把这几个关键的库也purge掉都重新装一遍,具体解决的过程如下所示,最后就好用了。

有问题的电脑B的排查过程

就是还是用上面的那些命令,来对比区别
在使用命令fd gmock | grep -vE 'media|anaconda3|Downloads|Documents'的时候,输出的结果是:

> fd gmock | grep -vE 'anaconda3|Downloads|Documents'
usr/src/gmock
home/tipriest/gmock_test
usr/include/gmock
home/tipriest/gmock_test/gmock_gtest_test.cpp
usr/include/gmock/gmock-cardinalities.h
usr/include/gmock/gmock-spec-builders.h
usr/include/gmock/gmock-more-actions.h
usr/include/gmock/gmock-actions.h
usr/include/gmock/gmock-matchers.h
usr/include/gmock/gmock-more-matchers.h
usr/include/gmock/gmock.h
usr/include/gmock/gmock-generated-matchers.h
usr/include/gmock/gmock-generated-actions.h
usr/include/gmock/gmock-generated-function-mockers.h
usr/include/gmock/gmock-function-mocker.h
usr/include/gmock/gmock-generated-function-mockers.h.pump
usr/include/gmock/gmock-generated-matchers.h.pump
usr/include/gmock/gmock-generated-actions.h.pump
usr/include/gmock/gmock-nice-strict.h
usr/share/doc/libgmock-dev
usr/lib/x86_64-linux-gnu/libgmock.a
usr/lib/x86_64-linux-gnu/libgmock_main.a
usr/lib/x86_64-linux-gnu/pkgconfig/gmock.pc
usr/lib/x86_64-linux-gnu/pkgconfig/gmock_main.pc
usr/share/lintian/overrides/libgmock-dev
var/lib/dpkg/info/libgmock-dev:amd64.list
var/lib/dpkg/info/libgmock-dev:amd64.md5sums
usr/include/gmock/internal/gmock-pp.h
usr/include/gmock/internal/gmock-port.h
usr/include/gmock/internal/gmock-internal-utils.h
usr/include/gmock/internal/custom/gmock-matchers.h
usr/include/gmock/internal/custom/gmock-port.h
usr/include/gmock/internal/custom/gmock-generated-actions.h
usr/include/gmock/internal/custom/gmock-generated-actions.h.pump
usr/share/cmake-3.16/Help/release/dev/FindGTest-target-for-gmock.rst

很明显和之前的电脑A输出的结果有很大区别,所以将包删掉重新装

> sudo apt list --installed| grep -E "google"WARNING: apt does not have a stable CLI interface. Use with caution in scripts.google-chrome-stable/now 138.0.7204.92-1 amd64 [installed,local]
google-mock/focal,now 1.10.0-2 amd64 [installed]
googletest/focal,focal,now 1.10.0-2 all [installed,automatic]
libgoogle-glog-dev/focal,now 0.4.0-1build1 amd64 [installed]
libgoogle-glog0v5/focal,now 0.4.0-1build1 amd64 [installed,automatic]
> sudo apt purge google-mock googletest libgoogle-glog-dev libgoogle-glog0v5

安装的过程删掉了很多和ROS相关的组件,在删除完成后使用下面的命令在进行安装的时候,又帮忙把google-mock googletest libgtest-dev啥的给装回来了,就很方便

> sudo apt install ros-noetic-desktop-full
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:evemu-tools evtest joystick libasound2-dev libcaca-dev libevemu3 libomp-dev libpulse-dev libsdl-image1.2-dev libsdl1.2-dev libslang2-dev libspnav-dev liburdfdom-tools nvidia-firmware-535-535.183.01 python-enum34python-numpy python-pkg-resources python3-bs4 python3-html5lib python3-lxml python3-pyassimp python3-soupsieve python3-webencodings ros-noetic-eigen-stl-containers ros-noetic-librealsense2 ros-noetic-random-numbersros-noetic-ruckig
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:google-mock googletest libgtest-dev ros-noetic-actionlib ros-noetic-actionlib-msgs ros-noetic-actionlib-tutorials ros-noetic-bond ros-noetic-bond-core ros-noetic-bondcpp ros-noetic-bondpy ros-noetic-camera-calibrationros-noetic-camera-calibration-parsers ros-noetic-camera-info-manager ros-noetic-catkin ros-noetic-common-msgs ros-noetic-common-tutorials ros-noetic-compressed-depth-image-transport ros-noetic-compressed-image-transportros-noetic-control-msgs ros-noetic-control-toolbox ros-noetic-controller-interface ros-noetic-controller-manager ros-noetic-controller-manager-msgs ros-noetic-cv-bridge ros-noetic-depth-image-proc ros-noetic-desktopros-noetic-diagnostic-aggregator ros

最终再次使用下面的命令观察gmock存在的文件夹的时候,就看到了和电脑A一致的结果,随后再编译就正常通过了

> fd gmock | grep -vE 'anaconda3|Downloads|Documents'
usr/src/gmock
home/tipriest/gmock_test
home/tipriest/gmock_test/gmock_gtest_test.cpp
usr/src/googletest/googlemock/cmake/gmock_main.pc.in
usr/src/googletest/googlemock/cmake/gmock.pc.in
usr/src/googletest/googlemock/docs/gmock_faq.md
usr/src/googletest/googlemock/include/gmock
usr/src/googletest/googlemock/src/gmock-spec-builders.cc
usr/src/googletest/googlemock/src/gmock-cardinalities.cc
usr/src/googletest/googlemock/src/gmock-all.cc
usr/src/googletest/googlemock/scripts/gmock-config.in
usr/src/googletest/googlemock/scripts/upload_gmock.py
usr/src/googletest/googlemock/scripts/fuse_gmock_files.py
usr/src/googletest/googlemock/scripts/gmock_doctor.py
usr/src/googletest/googlemock/test/gmock_ex_test.cc
usr/src/googletest/googlemock/test/gmock-spec-builders_test.cc
usr/src/googletest/googlemock/test/gmock-generated-actions_test.cc
usr/src/googletest/googlemock/test/gmock_leak_test_.cc
usr/src/googletest/googlemock/test/gmock_all_test.cc
usr/src/googletest/googlemock/test/gmock-cardinalities_test.cc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95042.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基础编程核心案例:从逻辑到应用

Java编程的核心在于将逻辑思维转化为可执行的代码。本专栏通过8个实用案例,覆盖条件判断、循环结构、数组操作、用户交互等基础知识点,展示如何用Java解决实际问题,从简单游戏到数据计算,逐步构建编程思维。 案例一:剪…

Starlink卫星终端对星策略是终端自主执行的还是网管中心调度的?

以下文章首先来源于Google Gemini的Deep Research的内容,在Deep Research的报告参考了SpaceX公开信息、FCC技术报告、相关专利(如US9906292B2)以及学术研究的综合分析,并参考了RFWirelessWorld和APNIC博客等二次来源。 文章完成之后,前后发给了Grok和deepseek,让Grok和d…

【CDA案例】数据分析案例拆解:解锁数据分析全流程!

在当今数字化时代,数据如同一座座金矿,蕴含着巨大的价值。企业、组织乃至个人都渴望从海量的数据中挖掘出有用的信息,以指导决策、优化运营、提升竞争力。今天我们以一个实际的数据分析案例为蓝本,深入拆解其全过程,带…

vulnhub-drippingblues靶场攻略

1.打开靶场,我们将网络连接方式改为NAT模式2.然后使用nmap扫描一下nat的网段3.存在21,22,80端口我们先来看一下21端口的ftp协议,发现可以直接匿名登录,并且可以下载存在的东西4.但是这个压缩包被加密了,我们…

afsim2.9_使用QtCreator和VSCode编译

使用QtCreator和VSCode编译AFSIM2.9源代码指南 准备工作 在开始编译AFSIM2.9源代码前,需要确保您的开发环境满足以下条件: 安装QtCreator安装Visual Studio Code(最新稳定版)获取AFSIM2.9源代码包安装必要的编译工具链&#xf…

TC39x STM(System Timer)学习记录

STM有哪些特性?自由运行的 64 位计数器所有 64 位可同步读取可同步读取 64 位计数器的不同 32 位部分基于与 STM 部分内容的比较匹配,灵活地产生服务请求在应用复位后自动开始计数若 ARSTDIS.STMxDIS 位清零,应用复位将复位 STM 寄存器&#…

css初学者第四天

<1>snipaste工具的使用snipaste是一个简单但强大的截图工具&#xff0c;也可以让你将截图贴回屏幕上。常用的快捷方式&#xff1a;1、F1可以截图&#xff0c;同时测量大小&#xff0c;设置箭头 书写文字等2、F3在桌面置顶显示3、点击图片&#xff0c;alt可以取色&#xf…

CompletableFuture实现Excel 多个sheet页批量导出

CompletableFuture实现Excel 多个sheet页批量导出 文章目录 CompletableFuture实现Excel 多个sheet页批量导出 为什么不能直接合并文件或Sheet? 我的方案合理性 1. 操作实现步骤 1.1、导入所需要的依赖 1.2 、Excel 导入导出对象 1.3、异步生成 Excel 文件到指定路径 1.4、合并…

搭建本地 Git 服务器

以下是搭建本地 Git 服务器的通用步骤&#xff0c;支持团队协作或私有仓库管理&#xff1a;方法 1&#xff1a;基于 SSH 的简单部署&#xff08;适合小团队&#xff09; 步骤 1&#xff1a;安装 Git 在服务器上安装 Git&#xff08;以 Ubuntu 为例&#xff09;&#xff1a; sud…

【Matplotlib】中文显示问题

中文显示问题本地Mac上作图&#xff0c;可以方便地实现中文字体显示。比如在Jupter中&#xff0c;通过&#xff1a;方法一&#xff1a;不下载字体库即可实现中文显示 (MAC)plt.rcParams[font.family][Arial Unicode MS]方法二&#xff1a;下载指定字体训即可实现中文显示plt.rc…

从“单体崩溃”到“稳定如山”:Java 构建高可用、低耦合架构实战指南

引言&#xff1a; 你是否经历过这样的痛苦&#xff1f;某个模块突然异常&#xff0c;整个系统瞬间崩盘&#xff0c;排查日志堆积如山&#xff0c;客户投诉不断。系统耦合严重、容错性差&#xff0c;成了上线最忌惮的“隐雷”。 而今天&#xff0c;我们要带你深入剖析如何通过事…

人工智能正在学习自我提升的方式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Numpy基础(广播机制)

广播机制 Numpy的Universal functions中要求输入的数组shape是一致的&#xff0c;当数组的shape不相等 时&#xff0c;则会使用广播机制。不过&#xff0c;调整数组使得shape一样&#xff0c;需要满足一定的规则&#xff0c;否则将 出错。这些规则可归纳为以下4条。 1&#xff…

reuse: for booting my spring project with mvn in Windows command line

boot.bat echo off setlocal enabledelayedexpansion:: 定义帮助信息 set HELP_MSG使用方法: %0 [选项,可选-m,-j,-h] [参数...]:: 默认启动方式为 mvn set MODEmvn set ARGS:: 解析命令行参数 :parse_args if "%~1""" goto end_parseif "%~1"&q…

NodeJs学习日志(4):路由合并_环境配置_常用文件目录

路由合并_环境配置_常用文件目录 路由合并 // routes/routes.js const express require(express); const router express.Router();// 合并子路由 var indexRouter require(../routes/index); var usersRouter require(../routes/users);router.use(/, indexRouter); route…

✨TRAE SOLO + Holopix AI | 轻松实现 “虚假广告“-转[特殊字符]割草小游戏

引言 &#x1f636; 两周前 (7.21) Trae-国际版 正式发布「SOLO」模式&#xff0c;需要 Pro 账户&#xff0c;邀请码一度 “难求”&#xff0c;海鲜市场还有人挂出 500块的 “天价”&#xff0c;这都能炒&#xff1f;我是无法理解的&#x1f937;‍♀️&#xff0c;目前一个月…

redis集群-本地环境

* Linux 本地集群&#xff1a;3主3从yum install -y gccyum install -y wgetyum install -y vimwget http://download.redis.io/releases/redis-7.2.5.tar.gztar -zxvf redis-7.2.5.tar.gzcd redis-7.2.5/makemake PREFIX/usr/local/redis install# 配置系统环境变量vim /etc/p…

海关 瑞数 失信企业 逆向 分析 后缀 rs

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;部分python代码headers {Accept: appl…

用 Postman 的 Tests 脚本,这行代码断言接口返回,自动化测试省一半事

本文聚焦 Postman 的 Tests 脚本在接口自动化测试中的核心作用&#xff0c;阐述如何通过编写 Tests 脚本实现接口返回的自动断言&#xff0c;从而大幅提升测试效率。文中详细介绍了 Tests 脚本的基础语法、常用断言方法、实战案例及优化技巧&#xff0c;涵盖从简单响应状态码校…

7、西门子PLC基础术语:数据单位、存储区域、寻址方式、字节序

一、数据单位&#xff08;数据长度类型&#xff09;术语名称位数所占字节说明Bit位1 bit1/8 Byte最小数据单位&#xff08;0或1&#xff09;BByte 字节8 bit1 Byte字节单位WWord 字16 bit2 Byte通常用于整数、状态字等DWDouble Word 双字32 bit4 Byte常用于浮点、双整数 1双字 …