何小bai 2024-12-24 22:20 采纳率: 25%
浏览 5
已结题

ubuntu安装mapnik,在make阶段出错

在按照github上的mapnik源码构建的教程走的时候,在make阶段出错

(base) alex@alex-pc:~/mapnik$ make
## then install the rest with -j1
scons/scons.py -j1 --config=cache --implicit-cache --max-drift=1
scons: Reading SConscript files ...
Using previous successful configuration...
Re-configure by running "python scons/scons.py configure".

Welcome to Mapnik...

scons: done reading SConscript files.
scons: Building targets ...
c++ -o plugins/input/gdal/gdal_datasource.os -c -std=c++17 -DU_USING_ICU_NAMESPACE=0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -O3 -fPIC -DBOOST_PHOENIX_STL_TUPLE_H_ -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ -DMAPNIK_PROJ_VERSION=80201 -DHAVE_PNG -DHAVE_WEBP -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -Ideps -Ideps/mapbox/polylabel/include -Ideps/mapbox/protozero/include -Ideps/mapbox/geometry/include -Ideps/mapbox/variant/include -Ideps/agg/include -Iinclude -I/home/alex/anaconda3/include -I/usr/local/include -I/usr/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdal plugins/input/gdal/gdal_datasource.cpp
c++ -o utils/mapnik-index/mapnik-index utils/mapnik-index/mapnik-index.o utils/mapnik-index/process_csv_file.o utils/mapnik-index/process_geojson_file_x3.o plugins/input/csv/csv_utils.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/home/alex/anaconda3/lib -L/usr/local/lib -L/usr/lib -lmapnik -lboost_program_options -lmapnik-json -lmapnik-wkt -licuuc
/usr/bin/ld: warning: libicui18n.so.73, needed by src/libmapnik.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: src/libmapnik.so: undefined reference to `icu_73::Collator::createInstance(icu_73::Locale const&, UErrorCode&)'
collect2: error: ld returned 1 exit status
scons: *** [utils/mapnik-index/mapnik-index] Error 1
scons: building terminated because of errors.
make: *** [Makefile:48:mapnik] error 2

这是缺少libicui18n.so.73这个吗,我看了下,在lib里是有libicui18n.so.74的,没有73,但是我想着用ln做个链接,结果会报libicuuc.so.73的错。

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    你的错误提示表明确实缺少libicui18n.so.73这个库。通常,在使用icu库时,你需要确保所有相关的库版本都是匹配的。在你的情况下,你提到了有libicui18n.so.74但没有libicui18n.so.73

    关于你提到的使用ln创建链接的问题,你应该确保链接的目标文件(这里是libicui18n.so.73)实际上并不存在,然后你创建链接时确保链接的是正确且存在的文件(这里是libicui18n.so.74或其他你有的版本)。但是,仅仅创建这个链接可能不足以解决问题,因为链接的版本和依赖的版本必须匹配。

    你可以尝试以下步骤来解决这个问题:

    1. 确认你的系统中安装了正确版本的icu库。你可以使用包管理器(如aptyum)来安装或更新它。例如,使用Ubuntu的apt可以这样安装:
    sudo apt-get install libicu-dev
    

    这将安装最新版本的ICU库。如果你的系统中有多个版本,确保选择正确的版本或尝试使用最新版本的库。 2. 如果问题仍然存在,你可以尝试找到与你已安装的libicuuc.so版本相匹配的libicui18n.so版本,并使用ln命令创建所需的链接。但要确保这两个库的版本匹配,并且这样做不会破坏系统的稳定性。你可以尝试以下命令来创建链接(请确保目标路径正确):

    sudo ln -s /path/to/existing/libicui18n.so /path/to/missing/libicui18n.so.73
    

    替换/path/to/为实际的文件路径。但请小心操作,确保不会覆盖任何重要文件或导致系统不稳定。如果不确定,最好先备份相关文件。 3. 重新编译Mapnik并检查是否解决了问题。如果问题仍然存在,可能需要考虑使用与系统兼容的Mapnik版本或其他依赖项的版本。此外,还可以检查你的构建步骤是否正确无误。有时候问题可能是由于配置错误或其他环境设置导致的。请确保遵循正确的构建步骤和配置选项。尝试参考官方文档或在线社区中的资源以获得更具体的帮助和指导。 希望这些步骤能帮助你解决问题!如果还有其他问题或需要进一步的帮助,请随时提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月4日
  • 已采纳回答 12月27日
  • 创建了问题 12月24日