我正在尝试编译mod_tile,但是从Mapnik 2.2升级到3.0后我失败了(我检查过只有3.0版本的软件包)。
在链接期间,现在有未定义的引用。链接器命令是
g++ -I/usr/include -I/usr/include/mapnik/agg -I/usr/include/mapnik -I/usr/include -I/usr/include/freetype2 -I/usr/include/libxml2 -I/usr/include/gdal -I/usr/include/postgresql -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng16 -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -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 -DHAVE_CAIRO -DGRID_RENDERER -DHAVE_LIBXML2 -std=c++11 -g -O2 -fdebug-prefix-map=/build/mapnik-3.0.12+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -Wshadow -O2 -g -O2 -o .libs/renderd src/daemon.o src/daemon_compat.o src/renderd-gen_tile.o src/sys_utils.o src/request_queue.o src/cache_expire.o src/renderd-metatile.o src/renderd-parameterize_style.o src/protocol_helper.o src/store.o src/store_file.o src/store_file_utils.o src/store_memcached.o src/store_rados.o src/store_ro_http_proxy.o src/store_ro_composite.o src/store_null.o -pthread -Wl,-z -Wl,relro -Wl,-z -Wl,now -g0 -pthread -L/usr/lib -lmapnik -L/usr/lib/x86_64-linux-gnu -lboost_filesystem -lboost_regex -lcairo -lpng /usr/lib/x86_64-linux-gnu/libproj.so /usr/lib/x86_64-linux-gnu/libtiff.so -lwebp -lxml2 -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc /usr/lib/x86_64-linux-gnu/libfreetype.so -lz -ldl /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so -Liniparser3.0b/.libs /home/fheer/src/mod_tile/iniparser3.0b/.libs/libiniparser.so -lm -pthread
第一个错误是
src/renderd-gen_tile.o: In function `load_fonts(char const*, int)':
mod_tile/src/gen_tile.cpp:175: undefined reference to `mapnik::freetype_engine::register_font(std::string const&)'
在/ usr / lib中搜索libmapnik.so,它存在于其中。 nm显示存在的符号:
$ nm -D /usr/lib/libmapnik.so|grep register_font
0000000000150920 T _ZN6mapnik15freetype_engine13register_fontERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
0000000000150c90 T _ZN6mapnik15freetype_engine14register_fontsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb
000000000014f2c0 T _ZN6mapnik15freetype_engine18register_font_implERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_12font_libraryERSt3mapIS6_St4pairIiS6_ESt4lessIS6_ESaISC_IS7_SD_EEE
00000000001509f0 T _ZN6mapnik15freetype_engine19register_fonts_implERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_12font_libraryERSt3mapIS6_St4pairIiS6_ESt4lessIS6_ESaISC_IS7_SD_EEEb
00000000001abfc0 T _ZN6mapnik3Map14register_fontsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb
我搜索了这个错误,但只找到了问题的解决方案,而不是这里的问题。也许我会监督一些明显的事情,任何指针都会受到赞赏!我只是不知道还能检查什么。