libboost_filesystem.so.1.71.0:无法打开共享对象文件:没有此文件或目录

libboost_filesystem.so.1.71.0:无法打开共享对象文件:没有此文件或目录

根据发现的迹象这里我正在尝试在 Ubuntu 22.04 中安装 Tile Server

但我收到了这个错误:

raphy@pc:~$ sudo -u _renderd osm2pgsql -d gis --create --slim  -G --hstore --tag-transform-script ./OSM_src/openstreetmap-carto/openstreetmap-carto.lua -C 2500 --number-processes 1 -S ./OSM_src/openstreetmap-carto/openstreetmap-carto.style ./OSM_src/data/azerbaijan-latest.osm.pbf
osm2pgsql: error while loading shared libraries: libboost_filesystem.so.1.71.0: cannot open shared object file: No such file or directory

现有的图书馆libboost1.74.0

raphy@pc:~$ sudo apt install libboost-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libboost-dev is already the newest version (1.74.0.3ubuntu7).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

raphy@pc:/usr/lib/x86_64-linux-gnu$ ls -lah | grep libboost_filesystem.so
lrwxrwxrwx   1 root root    29 mar 16  2022 libboost_filesystem.so -> libboost_filesystem.so.1.74.0
-rw-r--r--   1 root root  123K mar 16  2022 libboost_filesystem.so.1.74.0

按照此处的指示:如何永久设置 LD_LIBRARY_PATH?.bashrc我已经在文件 中设置:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/libboost_filesystem.so"

并且,遵循这里的迹象:https://serverfault.com/questions/201709/how-to-set-ld-library-path-in-ubuntu 我已设置/etc/ld.so.conf.d/libboost.conf为:

/usr/lib/x86_64-linux-gnu/libboost_filesystem.so

进而

sudo ldconfig

但仍然出现错误:

osm2pgsql: error while loading shared libraries: libboost_filesystem.so.1.71.0: cannot open shared object file: No such file or directory

如何解决这个问题?

答案1

此错误消息表明libboost_filesystem.so.1.71.0未找到共享库。这是因为 Ubuntu 22.04 附带 boost 1.74.0,因此仅存在文件 libboost_filesystem.so.1.74.0。库位于 中/usr/lib/x86_64-linux-gnu

对我来说,一个快速而肮脏的方法是添加一个符号链接:

ln -s libboost_filesystem.so libboost_filesystem.so.1.71.0 

但请记住,这会造成库不一致,因为您想要使用旧版本的库执行代码,而新版本可能已经删除了代码破坏的某些内容。

更干净的方法是安装旧版的 boost 版本,但这无法通过 apt 实现,因为 1.71 版本适用于已经过时的 ubuntu 22.04。

相关内容