【包编译】库文件安装错位置怎么办

背景:

在建图的工作空间mapping中,编译好了GeographphicLib-2.3之后,对工作空间mapping进行编译,报错,找不到下面这俩。

总结:

原因:因为GeographphicLib的库文件在编译的时候没有放到默认系统目录usr/local下,而是放到了/tmp下,所以位于GeographphicLib-2.3/cmake下的FindGeographicLib.cmake文件找不到库文件了。

解决办法:

重新编译

并在cmake步骤,设置 -DCMAKE_INSTALL_PREFIX=/usr/local

cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local

编译建图工作空间

报错:找不到库文件

我实际上已经按照常规流程下载、解压、编译并安装了 GeographicLib-2.3。操作如下:

我 /usr/local/lib/cmake/路径下没有GeographicLib,更没有GeographicLibConfig.cmake 或 geographiclib-config.cmake 文件。

我在/home/wk/文档/1项目代码资料/sjtu/3月18建图和规划/mapping/src/GeographicLib-2.3/cmake下找到了FindGeographicLib.cmake文件。

 

 

 

 

重新 sudo make install 可以发现

GeographicLib 已经成功地通过 sudo make install 命令进行了安装。但是,它仍然被安装到了 /tmp/geographic 目录下,这是一个临时目录,通常用于存放临时文件,系统重启后可能会被清理。因此,这不是一个适合长期存储库文件的位置。

sudo make install

[sudo] wk 的密码:

Making install in src

make[1]: 进入目录“/home/wk/文档/1项目代码资料/sjtu/3月18建图和规划/mapping/src/GeographicLib-2.3/BUILD/src”

make[2]: 进入目录“/home/wk/文档/1项目代码资料/sjtu/3月18建图和规划/mapping/src/GeographicLib-2.3/BUILD/src”

/usr/bin/mkdir -p '/tmp/geographic/lib'

/bin/bash ../libtool --mode=install /usr/bin/install -c libGeographicLib.la '/tmp/geographic/lib'

libtool: install: /usr/bin/install -c .libs/libGeographicLib.so.26.0.0 /tmp/geographic/lib/libGeographicLib.so.26.0.0

libtool: install: (cd /tmp/geographic/lib && { ln -s -f libGeographicLib.so.26.0.0 libGeographicLib.so.26 || { rm -f libGeographicLib.so.26 && ln -s libGeographicLib.so.26.0.0 libGeographicLib.so.26; }; })

libtool: install: (cd /tmp/geographic/lib && { ln -s -f libGeographicLib.so.26.0.0 libGeographicLib.so || { rm -f libGeographicLib.so && ln -s libGeographicLib.so.26.0.0 libGeographicLib.so; }; })

下面很重要


重新配置 GeographicLib: 回到 GeographicLib-2.3 目录下,删除旧的 BUILD 或 build 目录,然后重新运行 cmake 配置命令,并指定合适的 CMAKE_INSTALL_PREFIX。例如:

mkdir build 
cd build 
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local

 

-DCMAKE_INSTALL_PREFIX=/usr/local 是一个常见的选项,用来指定 GeographicLib 库和其他相关文件的安装路径。

这个路径通常代表系统的本地软件目录,对于大多数 Linux 发行版来说,/usr/local 是用户自定义安装软件的标准位置。

使用这个选项时,make install 命令将会把库文件、头文件、工具、手册页等安装到 /usr/local 下对应的子目录中:

  • 库文件会被安装到 /usr/local/lib
  • 头文件会被安装到 /usr/local/include
  • 手册页会被安装到 /usr/local/share/man
  • 其他资源(如配置文件、数据文件等)会被安装到 /usr/local/share/<package> 或 /usr/local/etc

使用 -DCMAKE_INSTALL_PREFIX=/usr/local 的好处包括:

  1. 遵循系统标准: 将第三方库安装到 /usr/local 符合 Linux 系统的约定,使得其他程序和包管理器更容易发现和处理这些库。同时,系统清理工具(如 apt-get autoremove)通常不会触及 /usr/local 下的内容,确保了用户自行安装的软件不会被意外删除。

  2. 环境变量和链接器路径: 现代 Linux 系统通常会自动包含 /usr/local/lib 和 /usr/local/include 在默认的库搜索路径 (LD_LIBRARY_PATH 和 C_INCLUDE_PATH) 以及编译器搜索路径 (CPATH 和 CPLUS_INCLUDE_PATH) 中。这意味着在许多情况下,您无需手动设置环境变量或在项目 CMakeLists.txt 中指定额外的链接和包含目录。

  3. 易于维护和升级: 当您需要更新或卸载 GeographicLib 时,只需重新编译安装到同一位置即可覆盖旧版本。如果您将来需要卸载,由于所有文件都集中在一个已知的位置,清理工作会更加简单。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“人工智能+数字人”,让数字技术赋能多领域智能化管理、数字化服务

AI数字人结合了语音合成、语音识别、语义理解、图像处理、虚拟形象驱动等多项AI核心技术&#xff0c;可以实现导览服务、信息播报、互动交流、业务咨询等智能化功能。 如今&#xff0c;AI数字人逐渐被政务、文旅、展馆展厅、博物馆、数字会议、金融、校园等等领域多元化应用&am…

springboot如何切换内置web服务器?

切换内置web服务器 这是没有引入web依赖的服务 这是引入web依赖的服务 由此可知默认是tomcat服务器 那么如何切换内置服务器 只要有对应服务器的坐标即可自动切换&#xff0c;先排除tomcat再引入依赖&#xff0c;比如切换成jetty服务器 <dependency><groupId>org…

SQL Serve---查询

概要 1、order by子句 —默认asc&#xff08;升序&#xff09;、desc&#xff08;降序&#xff09; 2、distinct关键字 3、group by子句 4、聚合函数 —max()、min()、sum()、avg()、count() 5、having子句 6、compute子句 英文关键字 order by 排序 asc…

【SpringBoot整合系列】SpringBoot整合FastDFS(二)

目录 SpringBoot整合FastDFSJava客户端/依赖常用api接口解释1.uploadFile参数返回值 2.uploadSlaveFile参数返回值 3.getMetadata参数返回值 4.overwriteMetadata参数&#xff1a;返回值&#xff1a;无 5.mergeMetadata参数&#xff1a;返回值&#xff1a;无 6.queryFileInfo参…

linux重定向符号

将ls命令执行结果重定向到a文件中 将错误ls命令执行结果重定向到a文件中&#xff08;这里用到前面的标准错误输出重定向&#xff09;

python linux服务器ssh简单爆破(测试用户名密码)(连接ssh服务器)(测试登录ssh服务器)

文章目录 背景示例代码代码解释导入模块SSH服务器的地址和端口用户名和密码列表生成所有可能的用户名和密码组合尝试连接到SSH服务器并验证用户名和密码遍历并测试每一对凭证 背景 我们华为摄像头linux终端的密码忘了&#xff0c;还不太好初始化&#xff0c;手动一个个测试太麻…

宏观认知第一篇--AI 是否就是第四次工业革命?

今年春节期间李一舟老师突然爆火&#xff0c;成功晋升为能与 ChatGPT 公司 CEO 齐名的中国 AI 大佬&#xff0c;赚到几个小目标后又火速被封&#xff0c;于是想着有空写篇小文章讲一讲跟普通人切身相关的话题-- AI 是否就是第四次工业革命&#xff1f; “AI 是否就是第四次工业…

数学杂谈之三:数学思想方法

数学杂谈之三&#xff1a;数学思想方法 数学杂谈之一&#xff1a;数学的形态 https://blog.csdn.net/cnds123/article/details/137437208 数学杂谈之二&#xff1a;数学中的概念和理解 https://blog.csdn.net/cnds123/article/details/137500537 数学思维、数学思想和数学方法…

SpringBoot学习(一)引入、分析、核心

文章目录 SpringBoot特性示例总结简化整合简化开发简化配置简化部署简化运维 Spring Initializer创建向导 应用分析依赖管理机制自动配置机制初步理解完整流程 SpringBoot学习点 核心技能常用注解YAML配置文件基本语法示例辅助工具lombok 日志配置简介格式组成记录日志日志级别…

看AI赋能数智化 | Gooxi AI服务器闪耀CITE 2024

4月9日“中国电子信息博览会暨2024 AI算力产业大会”在深圳如期开展&#xff0c;Gooxi携最新产品、行业应用全栈解决方案出席盛会&#xff0c;全面展示Gooxi回应数智新时代下机遇与挑战的丰富AI创新实践成果。 All in AI&#xff0c;奔赴新质生产力 作为中国领先的服务器解决…

题目 2348: 信息学奥赛一本通T1436-数列分段II【二分答案】

信息学奥赛一本通T1436-数列分段II - C语言网 (dotcpp.com) #include<iostream> #include<algorithm> #include<cstring> using namespace std; #define int long long const int N1e5100; const int inf1e9; int n,m; int a[N]; bool check(int mid) {int s…

Linux网络名称空间和虚拟机有何区别

在Linux系统中&#xff0c;网络名称空间和虚拟机都是实现资源隔离和虚拟化的技术&#xff0c;但它们在设计理念、实现机制、资源消耗、使用场景等方面存在着显著的区别。本文旨在全方位、系统性地分析这两种技术的区别。&#x1f50d; 1. 设计理念与实现机制 1.1. 网络名称空…

中通科技数仓数据治理实践

目录 一、背景 1.1 中通数仓架构介绍 1.2 中通数仓层级划分 1.3 中通数据现状 1.4 中通数仓现面临的压力 二、数据仓库具体实践 2.1 时效治理 2.1.1 数据入仓治理 2.1.2 核心模型治理 2.2 存储治理 2.3 内存治理 2.3.1 内存浪费治理 2.3.2 数据倾斜治理 2.3.3 内…

10:00面试,10:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

基于 MATLAB 和 App Designer 的 UI 交互框架开发的一款电力系统潮流计算工具

基于 MATLAB 和 App Designer 的 UI 交互框架开发的一款电力系统潮流计算工具 文章目录 基于 MATLAB 和 App Designer 的 UI 交互框架开发的一款电力系统潮流计算工具一、软件介绍二、软件功能1、数据输入 2、潮流作业设置3、 潮流结果报表及可视化三、 软件设计思路1 、牛顿拉…

C语言操作符详解(三)

一、表达式求值 1.1整型提升 C语言中整型算术运算总是至少以缺省整型类型的精度来进行的。 为了获得这个精度&#xff0c;表达式中的字符和短整型操作数在使用之前被转换为普通整型&#xff0c;这种转换称为整型提升。 如何进行整型提升呢&#xff1f; 1. 有符号整数提升是按…

高并发高性能接口中,异步打印并采集业务日志的实现方案

一、背景 高并发接口中&#xff0c;为了提高接口的高性能&#xff0c;在需要保存审计及操作记录的时候&#xff0c;往往有以下常见方案&#xff1a; 保存到redis数据库异步保存到mysql/mongodb/es等数据库logger打印业务日志&#xff0c;采集与展示则交由elk模块 对于第一种…

基于Springboot的箱包存储系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的箱包存储系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

【web开发01】前端开发HTML、CSS-新浪新闻的实现

前端开发HTML、CSS-新浪新闻的实现 1 实现标题排版1.1图片连接的三种方式1.2 具体代码1.3 总结1.< h1>到< h6>是标题从大到小 2 实现标题样式2.1 css的三种引入方式2.2 颜色的三种表示2.3 css选择器2.4 超链接 3 实现正文排版3.1 视频标签 video3.2 音频标签 audio…

Spring高手之路17——动态代理的艺术与实践

文章目录 1. 背景2. JDK动态代理2.1 定义和演示2.2 不同方法分别代理2.3 熔断限流和日志监控 3. CGLIB动态代理3.1 定义和演示3.2 不同方法分别代理&#xff08;对比JDK动态代理写法&#xff09;3.3 熔断限流和日志监控&#xff08;对比JDK动态代理写法&#xff09; 4. 动态代理…