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

文章讲述了在编译GeographicLib过程中遇到的找不到库文件的问题,原因是库文件未安装到默认目录。解决方法是重新编译并设置CMAKE_INSTALL_PREFIX为/usr/local,确保库文件正确安装。
摘要由CSDN通过智能技术生成

背景:

在建图的工作空间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 时,只需重新编译安装到同一位置即可覆盖旧版本。如果您将来需要卸载,由于所有文件都集中在一个已知的位置,清理工作会更加简单。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DFminer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值