記錄一次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
英文地址,請注明出處:http://en.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雙字 …