Please review whether available library is properly compiled and provided examples are adequate to available version.
Project cpp_read failes during linker phase with output :
/usr/bin/ld: /tmp/ccpI2Ms1.o: in function main': geomtry.cpp:(.text+0x4e): undefined reference to geos::io::WKTReader::WKTReader(geos::geom::GeometryFactory const&)'
/usr/bin/ld: geomtry.cpp:(.text+0x296): undefined reference to geos::io::WKTReader::~WKTReader()' /usr/bin/ld: geomtry.cpp:(.text+0x380): undefined reference to geos::io::WKTReader::~WKTReader()'
collect2: error: ld returned 1 exit status
Compiled with g++ cpp_read.cpp -lgeos
I am on Ubuntu 22.04 with, as of time of writing, up-to-date libgeos and libgeos++-dev packages installed :
$ apt list --installed | grep libgeos
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libgeos++-dev/jammy,now 3.10.2-1 amd64 [installed]
libgeos-c1v5/jammy,now 3.10.2-1 amd64 [installed,automatic]
libgeos-dev/jammy,now 3.10.2-1 amd64 [installed,automatic]
libgeos3.10.2/jammy,now 3.10.2-1 amd64 [installed,automatic]
On my older machine with geos 3.8.0 installed everything works fine.
While digging with readelf and nm I found out that there might be missing definitions for constructor and destructor declarations.
Output for geos.so.3.8.0:
$ nm --print-file-name --dynamic /usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so | grep -i wktreader
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000104830 T _ZN4geos2io9WKTReader11getNextWordB5cxx11EPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000001046a0 T _ZN4geos2io9WKTReader12isNumberNextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000104fe0 T _ZN4geos2io9WKTReader13getNextCloserB5cxx11EPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000001046c0 T _ZN4geos2io9WKTReader13getNextNumberEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000105040 T _ZN4geos2io9WKTReader13readPointTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000104be0 T _ZN4geos2io9WKTReader14getCoordinatesEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000105c30 T _ZN4geos2io9WKTReader15readPolygonTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000001051d0 T _ZN4geos2io9WKTReader18readLinearRingTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000105150 T _ZN4geos2io9WKTReader18readLineStringTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000105250 T _ZN4geos2io9WKTReader18readMultiPointTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000104b60 T _ZN4geos2io9WKTReader20getNextCloserOrCommaB5cxx11EPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000001049b0 T _ZN4geos2io9WKTReader20getNextEmptyOrOpenerB5cxx11EPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000104760 T _ZN4geos2io9WKTReader20getPreciseCoordinateEPNS0_15StringTokenizerERNS_4geom10CoordinateERm
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000106440 T _ZN4geos2io9WKTReader20readMultiPolygonTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000106cc0 T _ZN4geos2io9WKTReader22readGeometryTaggedTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000106160 T _ZN4geos2io9WKTReader23readMultiLineStringTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000001069e0 T _ZN4geos2io9WKTReader26readGeometryCollectionTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000106f00 T _ZN4geos2io9WKTReader4readERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985b0 T _ZN4geos2io9WKTReaderC1EPKNS_4geom15GeometryFactoryE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985d0 T _ZN4geos2io9WKTReaderC1ERKNS_4geom15GeometryFactoryE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985f0 T _ZN4geos2io9WKTReaderC1Ev
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985b0 T _ZN4geos2io9WKTReaderC2EPKNS_4geom15GeometryFactoryE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985d0 T _ZN4geos2io9WKTReaderC2ERKNS_4geom15GeometryFactoryE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985f0 T _ZN4geos2io9WKTReaderC2Ev
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000098610 T _ZN4geos2io9WKTReaderD1Ev
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000098610 T _ZN4geos2io9WKTReaderD2Ev
Output for geos.3.10.2 :
$ nm --print-file-name --dynamic /usr/lib/x86_64-linux-gnu/libgeos.so | grep -i wktreader
/usr/lib/x86_64-linux-gnu/libgeos.so:00000000001092e0 T _ZN4geos2io9WKTReader11getNextWordB5cxx11EPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:0000000000106b30 T _ZN4geos2io9WKTReader12isNumberNextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:000000000010a940 T _ZN4geos2io9WKTReader13getNextCloserB5cxx11EPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:0000000000109190 T _ZN4geos2io9WKTReader13getNextNumberEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:0000000000109640 T _ZN4geos2io9WKTReader20getNextCloserOrCommaB5cxx11EPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:0000000000109450 T _ZN4geos2io9WKTReader20getNextEmptyOrOpenerB5cxx11EPNS0_15StringTokenizerERm
/usr/lib/x86_64-linux-gnu/libgeos.so:000000000010a9a0 T _ZNK4geos2io9WKTReader13readPointTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:00000000001096c0 T _ZNK4geos2io9WKTReader14getCoordinatesEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:0000000000109bf0 T _ZNK4geos2io9WKTReader15readPolygonTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:0000000000109b70 T _ZNK4geos2io9WKTReader18readLinearRingTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:0000000000109af0 T _ZNK4geos2io9WKTReader18readLineStringTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:000000000010aad0 T _ZNK4geos2io9WKTReader18readMultiPointTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:0000000000109220 T _ZNK4geos2io9WKTReader20getPreciseCoordinateEPNS0_15StringTokenizerERNS_4geom10CoordinateERm
/usr/lib/x86_64-linux-gnu/libgeos.so:000000000010a400 T _ZNK4geos2io9WKTReader20readMultiPolygonTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:000000000010b3c0 T _ZNK4geos2io9WKTReader22readGeometryTaggedTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:000000000010a130 T _ZNK4geos2io9WKTReader23readMultiLineStringTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:000000000010b600 T _ZNK4geos2io9WKTReader26readGeometryCollectionTextEPNS0_15StringTokenizerE
/usr/lib/x86_64-linux-gnu/libgeos.so:0000000000105250 T _ZNK4geos2io9WKTReader4readERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Please note shorter output and lack of definitions
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985f0 T _ZN4geos2io9WKTReaderC1Ev
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985b0 T _ZN4geos2io9WKTReaderC2EPKNS_4geom15GeometryFactoryE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985d0 T _ZN4geos2io9WKTReaderC2ERKNS_4geom15GeometryFactoryE
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:00000000000985f0 T _ZN4geos2io9WKTReaderC2Ev
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000098610 T _ZN4geos2io9WKTReaderD1Ev
/usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so:0000000000098610 T _ZN4geos2io9WKTReaderD2Ev
Are there any additional steps I am not aware of? Has anything changed and somehow skipped the documentation update?
Please review whether available library is properly compiled and provided examples are adequate to available version.
Project cpp_read failes during linker phase with output :
Compiled with
g++ cpp_read.cpp -lgeosI am on Ubuntu 22.04 with, as of time of writing, up-to-date libgeos and libgeos++-dev packages installed :
$ apt list --installed | grep libgeosOn my older machine with geos 3.8.0 installed everything works fine.
While digging with readelf and nm I found out that there might be missing definitions for constructor and destructor declarations.
Output for geos.so.3.8.0:
$ nm --print-file-name --dynamic /usr/lib/x86_64-linux-gnu/libgeos-3.8.0.so | grep -i wktreaderOutput for geos.3.10.2 :
$ nm --print-file-name --dynamic /usr/lib/x86_64-linux-gnu/libgeos.so | grep -i wktreaderPlease note shorter output and lack of definitions
Are there any additional steps I am not aware of? Has anything changed and somehow skipped the documentation update?